Search code examples
c++pointersmemory-managementnew-operatordelete-operator

Confusion about Memory deallocation in C++


I'm having some confusion about memory de-allocation in C++. I have a structure

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

and I declare a pointer of Node type as:

struct Node* myNode = new Node;

Now if I do a delete myNode does it also de-allocates the left and right pointer inside myNode? If it doesn't, wouldn't it be very tedious if we have a lot of pointers inside Node type and will be very difficult to write code without memory leakage?


Solution

  • No it wont destruct or deallocate them. However, for such cases you can write a destructor:

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

    An even better approach would be to use smart pointer like std::shared_ptr or std::unique_ptr