1,105,288 Community Members

Should I delete the DATA from a linked list node?

Member Avatar
Elixir42
Junior Poster in Training
71 posts since Oct 2012
Reputation Points: 0 [?]
Q&As Helped to Solve: 2 [?]
Skill Endorsements: 0 [?]
Sponsor
 
0
 

I have written a working templated linked list that can hold a number of Types. Each of which are created with new before sending them to the InsertNode function.
in Main:

CMyType* pMyType1 = new CMyType;  // Create a new MyType*
pMyType1->m_iData = 5;            // Hold a value
LLMyTypes.InsertAtEnd(pMyType1);

in CLinkedList::InsertAtEnd(...)

CNode<T>* pNewNode = new CNode<T>(pData);
...
m_uNodeCount++;

Should I delete just the node? or the data then the node or what? I have run some tests and the following runs fine
within CLinkedList::DeleteNode(...)

delete pNode->GetData(); // inline just returns m_pData (calls destructor of MyType)
delete pNode;            // (calls destructor)

Is this ok to do. I tried just deleting ONLY the node and in the debugger it shows m_pData going null too. But since I new'd the pMyType in main shouldn't I delete that somewhere as well?

I look forward to your reply.

Member Avatar
deceptikon
Eternally Awesome
4,666 posts since Jan 2012
Reputation Points: 1,339 [?]
Q&As Helped to Solve: 679 [?]
Skill Endorsements: 104 [?]
Administrator
Featured
 
0
 

Everytime you say new, there should be a corresponding delete. Or better yet, you should use smart pointers to save yourself the trouble of figuring out when and where to release memory or worry about forgetting to do it.

Member Avatar
Elixir42
Junior Poster in Training
71 posts since Oct 2012
Reputation Points: 0 [?]
Q&As Helped to Solve: 2 [?]
Skill Endorsements: 0 [?]
Sponsor
 
0
 

thanks (that was fast btw)

You
This article has been dead for over three months: Start a new discussion instead
Post:
Start New Discussion
View similar articles that have also been tagged: