delete和delete[]

"delete[] p2”

最近碰到的。对delete[]一开始不太明白

查了查知道了一些。。

C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete。回收用 new[] 分配的一组对象的内存空间的时候用 delete[]

关于 new[] 和 delete[]。其中又分为两种情况:(1) 为基本数据类型分配和回收空间;(2) 为自定义类型分配和回收空间

所以。对于 (1)。delete[] 和 delete 是等同的

           对于(2)。假设自己定义的类userClass。。然后userClass *p=new userClass[NUM]。。delete p在回收空间的过程中。只有 p[0] 这个对象调用了析构函数。其它对象如 p[1]、p[2] 等都没有调用自身的析构函数。这就是问题的症结所在。。如果用 delete[]。则在回收空间之前所有对象都会首先调用自己的析构函数

基本类型的对象没有析构函数。所以回收基本类型组成的数组空间用 delete 和 delete[] 应该都是可以的。但是对于类对象数组,只能用 delete[]。对于 new 的单个对象,只能用 delete 不能用 delete[] 回收空间

一个简单的使用原则就是:new 和 delete、new[] 和 delete[] 对应使用。

posted @ 2008-07-12 13:01  freezym  阅读(143)  评论(0编辑  收藏  举报