delete 和delete []的区别
2010-11-25 18:52
281 查看
今天看到动态内存分配时对delete和delete[]产生了疑惑,通过一个程序分析下他们的区别。
第一次运行,delete语句执行后,2个对象数组都分别调用了3次析构函数。
把delete []p2改为delete p2后,只调用一次析构函数,在vc6.0下编译运行后,程序还会产生一个错误警告。
总结如下:new和delete,new [] 和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 []应该成对使用。
相关文章推荐
- delete 和 delete []的真正区别
- C++中delete和delete[]的区别
- 详解Oracle DELETE和TRUNCATE 的区别
- file.delete()与file.deleteOnExit(); 的区别
- c的free和c++的delete的区别
- Delete和delete []的区别
- malloc/free与new/delete的区别
- SQL中truncate table和delete的区别
- mysql中drop、truncat、delete的用法区别
- TRUNCATE和DELETE的几点区别
- 详解MySQL中DROP,TRUNCATE 和DELETE的区别
- 实例对比Oracle中truncate和delete的区别
- malloc/free与new/delete的区别
- Datatable删除行的Delete和Remove方法的区别介绍
- SQL中 Delete、Truncate、Drop的区别与应用
- new/delete 和malloc/free 的区别一般汇总
- SQL--delete、drop、truncate的区别
- 删除数据truncate与delete的区别
- MySql中delete from和 truncate table的区别
- delete from和truncate删除的区别详解