編輯文章 - 博客頻道 - CSDN.NET

在C++中比較麻煩的就是對內存的動態操作,new後必須delete,否則就造成內存泄露,假如沒有正確地new,就會造成空指針或野指針的情況,導致數據被破壞,程序發生異常.

先看一段代碼

申請內存:

int** a;
a = new int*[10];
for (j = 0; j< 10; j++)
{
a[j] = new int[5];
}




int** a;
a = new int*[10];
for(j = 0; j < 10; j++)
{
a[j] = new int;
}

釋放內存:

for(i = 0; i < 10; i++)

{

delete[] a[i];

a[i] = NULL;

}


  delete[] a;

a = NULL;

}

申請的時候,一個是a[j] = new int[5];一個a[j] = new int;首先正確的是a[j] = new int[5]。錯誤的寫法是a[j] = new int。因爲後者沒有說明具體有多少元素,在後面的操作的時候,會指向野指針,同時在調用delete的時候,也會發生異常。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章