c++在析构函数中删除数组
c++ deleting array in destructor
所以我得到了一个对象它有一个数组作为实例之一:
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[]
动态分配的数组执行此操作。
相关文章:
- 你能帮我解决删除数组 c++ 中重复值的挑战吗?
- 删除[i] 数组和删除数组 [i] 之间的区别
- 如何实现删除数组的功能?
- 删除数组 c++ 崩溃问题
- 如何删除数组列表中的元素
- C++删除数组只会解除分配第一项
- 删除数组成员的更好方法是什么?
- 如何使用 deleteEntry 函数 c++ 删除数组中的单个字符串
- 删除数组中所有出现的数字 C++
- C++ 删除数组时检测到堆损坏
- 不允许删除数组的一部分,为什么
- 如何删除数组中第一次出现的值
- 当我删除数组时,指针在哪里?指向数组的指针与数组中的元素之间的区别
- 尝试用C 中的空地址(而非null)删除数组指针
- 为什么 std::remove 不删除数组的最后一个元素
- 如何使用c++删除数组中的一些值
- 仅删除数组的第一个元素
- 删除数组时断言失败
- 如何并行删除数组中的零值
- 访问指针数组/通过另一个指针并删除数组中的单个元素而不删除第一个指针或整个数组