首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于delete与delete[]的区别,该怎么处理

2012-05-11 
关于delete与delete[]的区别对于这段话:delete只会调用一次析构函数,而delete[]会调用每一个成员的析构函

关于delete与delete[]的区别
对于这段话:
delete只会调用一次析构函数,而delete[]会调用每一个成员的析构函数。在More Effective C++中有更为详细的解释:“当delete操作符用于数组时,它为每个数组元素调用析构函数,然后调用operatordelete来释放内存。”delete与New配套,delete []与new []配套
MemTest*mTest1=newMemTest[10];
MemTest*mTest2=newMemTest;
int*pInt1=newint[10];
int*pInt2=newint; 
delete[]pInt1; //-1-
delete[]pInt2; //-2-
delete[]mTest1;//-3-
delete[]mTest2;//-4-
在-4-处报错。
这就说明:对于内建简单数据类型,delete和delete[]功能是相同的。对于自定义的复杂数据类型,delete和delete[]不能互用。

那么我这么理解:(
使用delete[]可以删除单个new出的的内置类型,用delete作用于new[]出的数组只是delete其中首元素???
)请问对么???

[解决办法]

探讨

可以指点一下么??没看懂~
引用:

错,完全错

[解决办法]
做遵守标准的事,别误导新手走入灰色地带。
探讨
引用:

可以指点一下么??没看懂~
引用:

错,完全错


1. 通常,记住new和delete成对调用,new []和delete[]成对调用,这是一般性的原则。
2. 对于简单内置数据类型,可以用delete来代替delete[],而不是用delete[]代替delete,比如:

C/C++ code


int* a =……

[解决办法]
简单的说,delete只会释放一个变量。
delete用于释放申请的数组变量

int *a = new int[10]
delete[] a//释放整个数组
delete a //仅释放第一个变量,即a[0]

热点排行