如何在析构函数中删除C++中动态分配的数组?
How to delete dynamically allocated array in destructor in C++?
在此处输入图像描述
如您所见,析构函数抱怨"使用未声明的标识符'a'
我的阵列是否超出范围?调用析构函数时如何删除它?
a
必须是类的成员变量。正如你现在拥有的那样,它是一个本地的
>a
需要是hashtable
的数据成员才能正常工作。现在它是构造函数的本地变量,因此当构造函数终止时,内存分配会泄漏。
但是,即使您纠正了此问题,也要注意五法则:如果实现以下任何一项,则需要实现或删除所有方法:
- 破坏者
- 复制构造函数
- 复制赋值运算符
- 移动构造函数
- 移动赋值运算符
如果您不这样做,编译器将为您生成它们,在这种情况下会弄错它们。 仅仅将指针值复制到新对象是不够的;需要进行新的分配并复制内容(移动的情况除外(。 编译器生成的版本将导致释放后使用或双重删除。
您可以通过使用std::vector<int>
而不是尝试管理自己的内存来避免所有这些。
相关文章:
- 这是使用回溯的 nqueen 问题,但我使用了动态 2d 数组,我的程序编译良好,但不返回任何输出
- 动态更改数组的大小并读取值.(无矢量)
- 检测到堆损坏:在正常块 c++ 动态 2D 数组之后
- 动态维度数组的 C++ 别名指针
- C++ 在析构函数调用之前删除的动态成员数组
- 从类 c++ 动态创建数组
- 具有静态 std::array 的神经网络比使用动态 C 数组的神经网络慢
- "Error reading character of string" 为哈希动态增长数组的问题 (C++)
- 为什么我们在传递动态 2D 数组时不需要列数?
- 如何解决在使用动态 2D 数组进行矩阵乘法的 MPI 进行并行编程时的问题
- 使用动态布尔数组时出现问题
- C++ 在类中删除动态 2D 数组时不断"Aborted (core dumped)"
- 如何在C 中动态输入数组
- 关于删除动态对象数组
- 在C 中动态更改数组大小
- 使用动态指针数组进行动态对象分配 - 使用什么删除?
- 动态字符串数组分配错误
- 函数中的动态 2D 数组分配并将其返回给主数组
- c++动态字符串数组分配
- 使用字符串或字符动态分配(数组)