析构函数会自动调用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 >
大小是否固定并且在编译时已知。