在C++中正确删除成员数组

ale*_*555 2 c++ memory-management

在我所在的类中,重构析构函数不会破坏其数组.

    class MyClass{
    public:
        double a;
        double rect[4];

        MyClass();
        ~MyClass();
    };

    MyClass::MyClass() : a(123.0)
    {
        memset(rect, 0, 4 * sizeof(double));
    }

    MyClass::~MyClass() {}
Run Code Online (Sandbox Code Playgroud)

我该如何正确销毁它?是否delete足够简单或者我还需要设置以下内容?

delete[] rect;
*rect= NULL;
Run Code Online (Sandbox Code Playgroud)

Dav*_*eas 15

作为一般经验法则,您需要删除新增的内容.该rect数组与封闭对象具有相同的存储空间,因此删除/离开分配整个对象的范围的过程将会非常谨慎.

  • "自动存储"大致意味着堆栈分配.`MyClass`对象的`rect`成员与`MyClass`对象本身具有相同的存储类 - 这取决于如何创建`MyClass`对象.但是你的要点是正确的:破坏封闭对象将会破坏`rect`成员. (2认同)