验证码: 看不清楚,换一张 查询 注册会员,免验证
  • {{ basic.site_slogan }}
  • 打开微信扫一扫,
    您还可以在这里找到我们哟

    关注我们

C++中delete函数如何使用

阅读:780 来源:乙速云 作者:代码code

C++中delete函数如何使用

在C++中delete函数用于回收new分配的内存空间。

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

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

在针对简单的基本数据类型,使用delete也可以回收 new[] 分配的一组对象的内存空间,因为:基本的数据类型对象没有析构函数,并且new 在分配内存时会记录分配的空间大小,则delete时能正确释放内存,无需调用析构函数释放其余指针。因此两种方式均可。

但是在对于自定义类型的时候,使用new[] 分配的一组对象的内存空间最好还是要用delete[]回收。

例:

#include ;
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;
}

结果:

C++中delete函数如何使用

可以看到在使用delete回收p1时,析构函数只调用了一次,也就是p1[0]的析构函数,使用delete[]回收p2时,析构函数全部调用了。所以如果在分配时使用new[],回收时最好用delete[]。

分享到:
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: hlamps#outlook.com (#换成@)。
相关文章
{{ v.title }}
{{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
你可能感兴趣
推荐阅读 更多>