我在雙向鏈表類中定義的clear()函數(shù)
如下:
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 即將被刪除的空間的一部分 再對一個已經(jīng)不存在的指針進(jìn)行操作當(dāng)然就會崩潰 這樣就導(dǎo)致在對temp的引用是不存在的 所以出錯
delete list_tail;
list_head = NULL;
size = 0;
}
else
{
return;
}
}
我還是很快發(fā)現(xiàn)了 但是很有覺得價值 所以寫下提醒自己