编辑文章 - 博客频道 - 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的时候,也会发生异常。


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