如何在C ++中的析构函数中删除动态分配的数组?

时间:2020-05-31 18:56:27

标签: c++ arrays

Firebase Documentation

如您所见,析构函数抱怨“使用未声明的标识符'a'

我的数组超出范围了吗?当我调用析构函数时,如何删除它?

2 个答案:

答案 0 :(得分:1)

a必须是该类的成员变量。现在,有了它本地

答案 1 :(得分:0)

a必须是hashtable的数据成员才能起作用。现在,它是构造函数的局部变量,因此,当构造函数终止时,内存分配将泄漏。

但是,即使您纠正了此问题,也要当心五个规则:如果实现以下任何一项,则需要实现或删除其中的所有

  • 析构函数
  • 复制构造函数
  • 复制分配运算符
  • 移动构造函数
  • 移动分配运算符

如果不这样做,编译器将为您生成它们,并且在这种情况下,它会弄错它们。仅将指针值复制到新对象是不够的。需要进行新的分配并复制内容(移动的情况除外)。编译器生成的版本 将导致使用后释放或重复删除。

您可以使用std::vector<int>来避免所有这些情况,而不必尝试管理自己的内存。

相关问题