我在雙向鏈表類(lèi)中定義的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;//釋放空間
}
原來(lái)這里的語(yǔ)句是temp != list_tail->back 但是一旦 temp 被賦值為 list_tail->back 那//么它本身就是 delTemp 即將被刪除的空間的一部分 再對(duì)一個(gè)已經(jīng)不存在的指針進(jìn)行操作當(dāng)然就會(huì)崩潰 這樣就導(dǎo)致在對(duì)temp的引用是不存在的 所以出錯(cuò)
delete list_tail;
list_head = NULL;
size = 0;
}
else
{
return;
}
}
我還是很快發(fā)現(xiàn)了 但是很有覺(jué)得價(jià)值 所以寫(xiě)下提醒自己