您的位置:首页 > 其它

delete 和delete []的区别

2010-11-25 18:52 281 查看
今天看到动态内存分配时对delete和delete[]产生了疑惑,通过一个程序分析下他们的区别。

#include <iostream>
using namespace std;
class T {
public:
T() { cout << "constructor" << endl; }
~T() { cout << "destructor" << endl; }
};

int main()
{
const int NUM = 3;
T* p1 = new T[NUM];
delete []p1;

cout<<"-----------------"<<endl;

T* p2 = new T[NUM];
delete []p2;  //把delete[]p2改为delete p2再运行次。

return 0;
}


第一次运行,delete语句执行后,2个对象数组都分别调用了3次析构函数。

把delete []p2改为delete p2后,只调用一次析构函数,在vc6.0下编译运行后,程序还会产生一个错误警告。

总结如下:new和delete,new [] 和delete []应该成对使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: