C++中的delete 和delete []运算符?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (42)

deletedelete[]之间的区别是什么?

提问于
用户回答回答于

delete运算符释放内存,并为创建的单个对象调用析构函数。

delete []运算符释放内存并调用析构函数,这些对象数组由new []

用户回答回答于

delete[]运算符用于删除数组。delete运算符用于删除非数组对象。它叫operator delete[]operator delete函数分别删除数组或非数组对象在(最终)调用数组元素或非数组对象的析构函数后占用的内存。

以下是关系:

typedef int array_type[1];

// create and destroy a int[1]
array_type *a = new array_type;
delete [] a;

// create and destroy an int
int *b = new int;
delete b;

// create and destroy an int[1]
int *c = new int[1];
delete[] c;

// create and destroy an int[1][2]
int (*d)[2] = new int[1][2];
delete [] d;

扫码关注云+社区

领取腾讯云代金券