我想删除链接列表中的所有元素。 我使用了下面的代码,它看起来好像符合./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