我想刪除鏈接列表中的所有元素。 我使用了下面的代碼,它看起來好像符合./a.out, 但是,當我使用valgrind ./a.out時,它說有內存錯誤。 你能幫我解決這個問題嗎? 謝謝!從開始刪除鏈接列表 - 內存錯誤
void List::emptyTheList()
if (head==NULL)
{
cout<<"there is no elements in the list" <<endl;
}
else
{
DR *temp1;//DR is a class
temp1=head->getNext();
while(temp1!=NULL)
{
free(head);
head=temp1;
temp1=head->getNext();
}
}
該代碼沒有正確縮進,也不會編譯。 (這個方法沒有開頭的括號。)你能解決這些問題嗎?然後我們會很好的回答這個問題。 – sigpwned 2013-04-29 02:27:04
另外,「列表中沒有元素」應該閱讀「列表中沒有元素」,如果您希望語法正確 –
Ozraptor
2013-04-29 02:30:01
就代碼的邏輯流程而言,它看起來像我從來沒有釋放列表中的最後一個元素?當'head'被分配給列表的最後一個元素時,temp1可能會被'head-> getNext()'設置爲null,這會在釋放最後一個元素之前導致while循環退出)。這可能是Valgrind抱怨的內存泄漏/問題。當您按照sigpwned的要求提供適當的代碼示例時,可以確認。 – Ozraptor 2013-04-29 02:39:12