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;
}
}
C ++中的简单删除节点 我要问的是在else语句中,如果链接列表结束,那么我可以删除myselft,我通过引用传递值(&amp;),但它不起作用
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中设置断点以进行调试
答案 0 :(得分:1)
应该是
delete pending;
pending = NULL;
(您的版本是另一种方式)。请注意,您首先将指针设置为NULL
,然后删除它,这样您就可以在空指针上有效地调用delete
。哪个是无操作 - 内存未发布。