如何删除自己的参考

时间:2012-12-06 19:14:11

标签: 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{
        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中设置断点以进行调试

1 个答案:

答案 0 :(得分:1)

应该是

 delete pending;
 pending = NULL;

您的版本是另一种方式)。请注意,您首先将指针设置为NULL,然后删除它,这样您就可以在空指针上有效地调用delete。哪个是无操作 - 内存未发布。