Pergunta

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?

Foi útil?

Solução

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top