删除在析构函数中不起作用?

Cat*_*one 2 c++ destructor memory-management

我在类的析构函数中删除类属性时遇到问题,如果我尝试在经典程序程序中执行相同的操作,则它可以完美地运行.

但是,如果我尝试执行下面的代码,析构函数不会delete"数组"并且不释放内存:

class MyClass
{
private:
    int *array;
    int n = 2000000;
public:
    MyClass(){
        this->array = new int[n];
        for(int i=0; i<n; i++){
            array[i] = i;
        }
    }
    ~MyClass(){
        delete[] array;
    }
};


int main(int argc, const char * argv[])
{
    MyClass *test = new MyClass;

    delete test;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么?

πάν*_*ῥεῖ 8

**别担心!**(我应该说_'不要惊慌失措'?)

如果delete执行了类的析构函数中的语句,则构造函数中分配的内存将被释放并可供将来使用.

这本身并不意味着操作系统为实例化您的类的实际进程分配的内存将减少.

作为附加提示:要检测程序中的"真实"内存泄漏,请使用Valgrind或类似工具.