c++在析构函数中删除数组

c++ deleting array in destructor

本文关键字:删除 数组 析构函数 c++      更新时间:2023-10-16

所以我得到了一个对象它有一个数组作为实例之一:

private:
  int arr[100]; //this is a fix array

当我调用对象的析构函数时,我应该写:

~MyBook(){delete []arr;} //just like I did with array pointer

或者我应该这样写

~MyBook(){}

谢谢

您是否使用new[]分配数组?没有?那么不要使用delete[]。就是这么简单。在没有分别分配new([])的对象上调用delete([])是未定义的行为。

同样,如果没有必要,不要写析构函数。在本例中,不需要。

如果只有数组,则不需要提供任何析构函数。编译器合成的就可以了。即使由于其他原因需要析构函数,也不应该尝试在数组上调用delete[]。您应该只对使用new[]动态分配的数组执行此操作。