c++ - 删除运算符和数组?

标签 c++ arrays memory-management

我有一个abstract Base 类和Derived 类。

int main ()
{
  Base *arrayPtr[3];

  for (int i = 0; i < 3; i++)
  {
    arrayPtr[i] = new Derived();
  }

  //some functions here

  delete[] arrayPtr;

  return 0;
}

我不确定如何使用删除运算符。如果我删除基类指针数组,如上所示,这是否会调用派生类对象的析构函数并清理内存?

最佳答案

您必须遍历数组的元素,删除 它们中的每一个。 如果已使用 new[] 动态分配数组,则调用 delete []

在您的示例代码中,数组分配在堆栈上,因此您不得对其调用 delete []

还要确保您的 Base 类有一个 virtual 析构函数。

引用:When should my destructor be virtual .

关于c++ - 删除运算符和数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2012510/

相关文章:

c++ - Visual Studio 2012 c++ 对 std 的智能感知评论可能吗?

python - numpy - 如何按索引计算嵌套列表中项目的出现次数?

javascript - 如何在javascript中将嵌套数组变成单个数组

c++ - operator new 在内存不足时不返回 0

memory-management - Fortran:模块中的可分配变量

c++ - libssh2 和 C++

c++ - 如何在运行时优雅地排除代码块

c++ - 将数据序列化到 std::streambuf

javascript - if 语句建议

c++ - 在类中声明的 Const 和 Static,C++