我在双向链表类中定义的clear()函数
如下:
void clear()
{
if( !isEmpty() )
{
list_item< type >* temp = list_head;
list_item< type >* delTemp;
while( temp != list_tail )
{
delTemp = temp;
temp = temp->back;
delete delTemp;//释放空间
}
原来这里的语句是temp != list_tail->back 但是一旦 temp 被赋值为 list_tail->back 那//么它本身就是 delTemp 即将被删除的空间的一部分 再对一个已经不存在的指针进行操作当然就会崩溃 这样就导致在对temp的引用是不存在的 所以出错
delete list_tail;
list_head = NULL;
size = 0;
}
else
{
return;
}
}
我还是很快发现了 但是很有觉得价值 所以写下提醒自己