野指標:釋放指標所指向的記憶體空間,和指標無關
//在堆區分配100*sizeof(char)個位元組的記憶體;
char *p=(char *)malloc(100*sizeof(char));
//在用完後釋放記憶體
free(p);
//這時候指標p所指向的存空間被釋放。
//但是這個時候p指標的值沒有發生變化,然後所指的記憶體空間已經沒有了意義。
//指標p成為了野指標。
//解決辦法很簡單如下:
p=null;
free(p);//這個時候程式出現問題,因為已經釋放了。
//所以在釋放記憶體之前,要先判斷是否為null指標。
//在釋放記憶體之後,要給指標賦null值,也只為了避免再次free程式出現問題。
記憶體洩漏:堆區的記憶體由程式設計師分配和釋放,如果只分配沒有釋放,每次只浪費乙個位元組的話,數量多的話,系統記憶體也會被用完
char * p=(char *) malloc(100*sizeof(char));
//malloc、new都在堆區分配記憶體
p=(char *) malloc(10000*sizeof(char));
p=(char *) malloc(10000*sizeof(char));
p=(char *) malloc(10000*sizeof(char));
p=(char *) malloc(10000*sizeof(char));
//如果一直這樣只分配不釋放,記憶體早晚會用完。
//即記憶體洩漏
記憶體溢位:定義乙個double型別的乙個變數,編譯器分配8個位元組的記憶體,但是這時候記憶體空間只剩下4個位元組的記憶體,不夠分配,這時候成為記憶體溢位。 C C 中的記憶體洩漏 記憶體溢位 野指標
記憶體溢位 野指標發生原因class object object intmain class object1 int main 發生原因 為什麼說strcpy和strncpy是c 的危險函式 2.strncpy strncpy dest,src,sizeof dest dest sizeof des...
野指標 記憶體洩漏 快取區溢位 棧溢位
今天梳理一下相關概念,用自己的語言來描述下 1.野指標 比如說吧 int main 輸出 當程式執行時是作為乙個程序,乙個程序有自己的虛擬空間,低位址是程式 和資料,然後是執行時堆,再然後是共享庫 標準庫之類的 然後是棧空間,用於函式區域性呼叫時 此時b指向了低位的程序位址,此時操作野指標b讀取可能...
關於 記憶體洩漏,野指標
記憶體洩漏 動態申請的記憶體空間沒有正常釋放,但也不能繼續使用 char a new char a char b new char b a b a 的空間未被釋放,也無法訪問,形成記憶體洩漏 基類的析構函式應設定為virtual,否則基類指標指向子類物件,呼叫基類析構時不會呼叫子類的析構函式,而造成...