2012-12-06 39 views
-1
void deleteElement(LinkedListElement<char> *&pending) 
{ 
    if (pending->Next) { 
     char value = pending->Next->Data; 
     pending->Data = value; 
     LinkedListElement<char> *temp = pending->Next; 
     pending->Next = pending->Next->Next; 
     delete temp; 
    }else{ 
     pending = NULL; 
     //pending =nullptr; 
     delete pending; 
    } 
} 

簡單刪除節點++ 我要問什麼是else語句,如果鏈表末端,這樣我就可以刪除myselft,我通過引用傳遞值(& ),但它不工作如何參照刪除自己用C

void deleteElement(LinkedListElement<char> *&pending) 
{ 
    if (pending->Next) { 
     char value = pending->Next->Data; 
     pending->Data = value; 
     LinkedListElement<char> *temp = pending->Next; 
     pending->Next = pending->Next->Next; 
     delete temp; 
    }else{ 
     delete pending; 
     //pending = NULL; 
    } 
} 

我嘗試這種方式,但它總是給我的錯誤: 的malloc:*錯誤對象0x100103b40:被釋放的指針沒有被分配 *設置malloc_error_break斷點調試

+2

「不起作用」是什麼意思? – djechlin

回答

1

應該

delete pending; 
pending = NULL; 

你的版本是周圍的其他方法)。請注意,您首先將指針設置爲NULL,之後將其刪除,因此您有效地在空指針上調用delete。這是一個沒有操作的內存沒有發佈。

+0

但它只是給我錯誤 – Hypnoz

+0

@我把錯誤放在上面,我編輯主題 – Hypnoz

+0

@Hypnoz內存問題......無法完整代碼無法調試。調試器說,你可能沒有用'new'分配它。縮小範圍。 –