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

时间:2013-01-20 23:18:52

标签: c++

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

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

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

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

或者我应该写这样的东西

~MyBook(){}

谢谢

2 个答案:

答案 0 :(得分:4)

您是否使用new[]分配了数组?没有?然后不要使用delete[]。就这么简单。对于未分配delete([])的内容,调用new([])是未定义的行为。

另外,如果不需要,请不要编写析构函数。在这种情况下,它不是必需的。

答案 1 :(得分:1)

如果您拥有的只是数组,那么您不需要提供任何析构函数。合成的编译器会很好。即使你出于其他原因确实需要析构函数,也不应该尝试在数组上调用delete[]。您应该只对使用new[]动态分配的数组执行此操作。

相关问题