本篇内容主要讲解“C++中delete函数如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++中delete函数如何使用”吧!
在C++中delete函数用于回收new分配的内存空间。
C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间的时候用 delete[]。
关于 new[] 和 delete[],其中又分为两种情况:(1) 为基本数据类型分配和回收空间;(2) 为自定义类型分配和回收空间。
在针对简单的基本数据类型,使用delete也可以回收 new[] 分配的一组对象的内存空间,因为:基本的数据类型对象没有析构函数,并且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]; cout << p1 << endl; //输出P1的地址 // delete[] p1; delete p1; T* p2 = new T[NUM]; cout << p2 << endl; //输出P2的地址 delete[] p2; return 0; }
结果:
可以看到在使用delete回收p1时,析构函数只调用了一次,也就是p1[0]的析构函数,使用delete[]回收p2时,析构函数全部调用了。所以如果在分配时使用new[],回收时最好用delete[]。