C++ 如何修复此错误:在malloc\u error\u break中设置断点以进行调试

C++ 如何修复此错误:在malloc\u error\u break中设置断点以进行调试,c++,linked-list,C++,Linked List,我正在学习编码链表。我当前正在尝试删除链接列表的第一个元素。所以我写了下面的代码。 对于第一个元素,它工作正常。但它显示了第二个元素的错误 void deleteFirst(Node* head){ Node* temp = head; head->data = temp->next->data; head->next = temp->next->next; free(temp);} 给定的链接列表: 234567 第一次

我正在学习编码链表。我当前正在尝试删除链接列表的第一个元素。所以我写了下面的代码。 对于第一个元素,它工作正常。但它显示了第二个元素的错误

void deleteFirst(Node* head){

    Node* temp = head;
    head->data = temp->next->data;
    head->next = temp->next->next;
    free(temp);}
给定的链接列表:

234567
第一次删除后,它将向我显示:

34567
第二次删除后,它将向我显示:

a.out(78094,0x7fff92d38380)malloc:
***对象0x7ffb39400370错误:未分配要释放的指针
***在malloc\u error\u break中设置断点以进行调试
中止陷阱:6

您的温度和磁头都指向同一个内存。当你释放温度时,你也会释放头部。检查您的逻辑并祝您好运。

您的温度和磁头都指向同一个内存。当你释放温度时,你也会释放头部。检查你的逻辑,祝你好运。

你为什么要释放
temp
?您是否打算释放
头部
?因为它就是这么做的。你设定温度=头,然后自由温度。。。这个序列不意味着内存(head,现在也是temp)已经返回到堆中了吗?因此不再分配使用,现在可供其他分配使用。。。你可能应该下定决心——使用头部的空间,或者分配一个新的头部,然后复制值。我期待着第一行和最后一行。。。因此,也许只需删除中间的两条线,然后将head改为pointtohead->next;你为什么要释放
temp
?您是否打算释放
头部
?因为它就是这么做的。你设定温度=头,然后自由温度。。。这个序列不意味着内存(head,现在也是temp)已经返回到堆中了吗?因此不再分配使用,现在可供其他分配使用。。。你可能应该下定决心——使用头部的空间,或者分配一个新的头部,然后复制值。我期待着第一行和最后一行。。。因此,也许只需删除中间的两条线,然后将head改为pointtohead->next;谢谢你在那件事上的帮助。现在我明白该怎么做了。谢谢你的帮助。现在我知道该怎么做了。