当前位置: 首页 > 工具软件 > delete > 使用案例 >

delete与 delete []区别

柳奇思
2023-12-01

delete只调用一次析构函数,delete[]会调用每一个成员的析构函数。在Effective c++中有更为详细的解释:当delete操作符用于数组时,它为每个数组元素调用析构函数,然后调用 operate delete释放内存。delete 与 new配套,delete[] 与 new[] 配套。

  

MemTest *mTest1=new MemTest[10];

MemTest *mTest2=new MemTest;

Int *pInt1=new int [10];

Int *pInt2=new int;

delete[]pInt1; //-1-

delete[]pInt2; //-2-

delete[]mTest1;//-3-

delete[]mTest2;//-4-

在-4-处报错,这就说明,在内建简单数据类型而言,delete 与delete[]的作用是相同的。对于自定义的复杂数据类型而言,delete 与 delete[]不能互用。delete[]删除一个数组,delete删除一个指针。简单来说:用new分配的内存用delete释放内存,用new[]分配的内存用delete[]删除。delete[]会调用数组成员的析构函数。内部数据类型没有析构函数,所以问题不大。如果在用delete时没有用括号,delete就会认为指向的是单个对象,反之,就会认为是指向的一个数组。

 类似资料: