所以我得到了一个对象,它有一个数组作为实例之一:
private:
int arr[100]; //this is a fix array
当我调用对象的析构函数时,我应该写:
~MyBook(){delete []arr;} //just like I did with array pointer
或者我应该写这样的东西
~MyBook(){}
谢谢
答案 0 :(得分:4)
您是否使用new[]
分配了数组?没有?然后不要使用delete[]
。就这么简单。对于未分配delete([])
的内容,调用new([])
是未定义的行为。
另外,如果不需要,请不要编写析构函数。在这种情况下,它不是必需的。
答案 1 :(得分:1)
如果您拥有的只是数组,那么您不需要提供任何析构函数。合成的编译器会很好。即使你出于其他原因确实需要析构函数,也不应该尝试在数组上调用delete[]
。您应该只对使用new[]
动态分配的数组执行此操作。