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

azi*_*kim 0 c++ pointers memory-management new-operator delete-operator

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

struct Node{
    Node* left;
    Node* right;
};
Run Code Online (Sandbox Code Playgroud)

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

struct Node* myNode = new Node;

现在,如果我这样delete myNode做,它还取消分配leftright指针内部myNode?如果没有,如果我们在Node类型内部有很多指针并且在没有内存泄漏的情况下编写代码将会非常困难,那会不会非常繁琐?

Seb*_*ann 9

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

~Node()
{
    delete left;
    delete right;
}
Run Code Online (Sandbox Code Playgroud)

更好的方法是使用像std::shared_ptr或的智能指针std::unique_ptr