C++学习 new和delete

        一直对C++中的delete和delete[]的区别不甚了解,今天遇到了,上网查了一下,得出告终论。作个备份,以避免丢失。web

        C++告诉咱们在回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间的时候用 delete[]。 
关于 new[] 和 delete[],其中又分为两种状况:(1) 为基本数据类型分配和回收空间;(2) 为自定义类型分配和回收空间。
数组

请看下面的程序。函数


 

        你们能够本身运行这个程序,看一看 delete p1 和 delete[] p1 的不一样结果,我就不在这里贴运行结果了。spa


        从运行结果中咱们能够看出,delete p1 在回收空间的过程当中,只有 p1[0] 这个对象调用了析构函数,其它对象如 p1[1]、p1[2] 等都没有调用自身的析构函数,这就是问题的症结所在。若是用 delete[],则在回收空间以前全部对象都会首先调用本身的析构函数。 
        基本类型的对象没有析构函数,因此回收基本类型组成的数组空间用 delete 和 delete[] 都是应该能够的;可是对于类对象数组,只能用 delete[]。对于 new 的单个对象,只能用 delete 不能用 delete[] 回收空间。 
         因此一个简单的使用原则就是:new 和 delete、new[] 和 delete[] 对应使用。
orm

相关文章
相关标签/搜索