«

C++中delete函数如何使用

时间:2024-8-4 06:40     作者:韩俊     分类: Java


本篇内容主要讲解“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[]。

标签: java

热门推荐