我正在开发一个使用双链表但我的析构函数导致错误的程序。我不确定为什么会这样,所以解释会很好,也可能是解决方案的可能步骤。
~GroceryList()
{
ItemType *before=head, *current=head, *after=head;
for(int i=0; i<itemCount; i++)
{
before=current;
current=current->next;
after=current->next;
before->next=after;
after->prev=before;
delete current;
}
current=before=after=NULL;
};
答案 0 :(得分:1)
首先,你应该显示错误消息。
我认为下面的行正在制造问题。
for(int i=0; i<itemCount; i++)
{
before=current; // this one
current=current->next;
after=current->next;
before->next=after;
after->prev=before;
delete current; // here you are deleting and again using `current` in first statement in loop?
}
答案 1 :(得分:0)
你有一个逻辑错误。
for(int i=0; i<itemCount; i++)
{
before=current;
current=current->next;
after=current->next;
before->next=after;
after->prev=before;
// Add some statements to print the conents of
// before, current, and after here to debug
// the memory problem.
delete current;
current = after; // Add this line.
}