析构函数是否会自动调用 delete[] C++?



析构函数会自动调用C++delete[]吗?

例如:

class A
{
int *num;
A()
{
num=new int[5];
}
~A() {}
}

我必须将delete[]添加到~A()中吗?

他们没有。如果您希望动态分配的int数组在销毁A时自动销毁,则使用std::vector<int>(如果大小固定,则std::array<int, 5>(而不是int指针可能是一个不错的选择。

No.您需要在析构函数中调用delete[] num以避免在析构类A实例时发生内存泄漏。

如果要避免这种手动簿记,可以考虑使用以下标准容器或包装器,这些容器或包装器在其析构函数中封装并为您执行簿记:

  • std::vector< int >如果大小不固定且在编译时未知;
  • std::unique_ptr< int[] >大小是否固定但在编译时未知;
  • std::array< int, N >大小是否固定并且在编译时已知。

最新更新