关于C ++中内存释放的困惑

时间:2014-03-07 19:41:33

标签: c++ pointers memory-management new-operator delete-operator

我对C ++中的内存解除分配感到困惑。我有一个结构

struct Node{
    Node* left;
    Node* right;
};

我将Node类型的指针声明为:

struct Node* myNode = new Node;

现在,如果我执行delete myNode,它还会在left内取消分配rightmyNode指针吗?如果没有,如果我们在Node类型中有很多指针并且在没有内存泄漏的情况下编写代码会非常困难,那会不会很乏味?

1 个答案:

答案 0 :(得分:9)

不,它不会破坏或解除分配。但是,对于这种情况,您可以编写析构函数:

~Node()
{
    delete left;
    delete right;
}

更好的方法是使用智能指针,如std::shared_ptrstd::unique_ptr