關於 記憶體洩漏,野指標

2021-08-28 04:08:15 字數 407 閱讀 6877

記憶體洩漏: 動態申請的記憶體空間沒有正常釋放,但也不能繼續使用;

char *a = new

char('a');

char *b = new

char('b');

a = b;

『a』的空間未被釋放,也無法訪問,形成記憶體洩漏;

(基類的析構函式應設定為virtual,否則基類指標指向子類物件,呼叫基類析構時不會呼叫子類的析構函式,而造成記憶體洩漏時,(virtual的動態繫結,其他是靜態繫結))

2. 野指標

a. 指標變數沒有初始化(值不定時應初始化為null);

b. 指標說指向的物件被釋放,指標沒有被置為null;

c. 指標操作超過了變數的作用範圍(方法返回了乙個指向方法內區域性變數的指標)。

記憶體洩漏與野指標

當你要為變數a申請一塊記憶體空間的時候,需要用到malloc函式。如何申請這塊記憶體空間呢?這就變成程式的工作了。程式首先會向系統申請一塊記憶體空間,然後程式會把申請好的這塊記憶體空間的首位址賦給變數a,假設這時候變數a拿到的首位址為0x1234,如果我們現在要對變數a進行迴圈操作,那麼每迴圈一次,...

記憶體洩漏與指標懸掛 野指標介紹

記憶體洩漏概念 記憶體洩漏時指動態申請的記憶體空間沒有正常釋放,但是也不能繼續使用的情況。例如 char ch1 ch1 new char a char ch2 new char ch1 ch2 程式執行後,指標ch1和ch2指向同乙個位址單元,而原來的ch1所申請的存放字元a的空間就不可能再使用,...

C C 中的記憶體洩漏 記憶體溢位 野指標

記憶體溢位 野指標發生原因class object object intmain class object1 int main 發生原因 為什麼說strcpy和strncpy是c 的危險函式 2.strncpy strncpy dest,src,sizeof dest dest sizeof des...