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

Do destructors automatically call delete[] in 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指针可能是一个不错的选择。

。您需要在析构函数中调用 delete[] num 以避免在析构 class A.

实例时发生内存泄漏

如果你想避免这种手动记账,你可以考虑使用以下标准容器或包装器,在它们的析构函数中为你封装和执行记账: