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

时间:2018-08-28 15:05:03

标签: c++ destructor

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

例如:

class A
{
    int *num;

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

    ~A() {}
}

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

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

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

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