-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;
    }
}

C++中的简单删除节点我想问的是在else语句中,如果链表是end,那么我可以删除自己,我通过引用(&)传递值,但它不起作用

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

4

1 回答 1

1

它应该是

 delete pending;
 pending = NULL;

你的版本是相反的)。请注意,您首先将指针设置为NULL,然后将其删除,因此您实际上是在调用delete空指针。这是一个无操作 - 内存没有被释放。

于 2012-12-06T19:14:59.370 回答