Question

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?

Était-ce utile?

La 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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top