我正在学习编码链表。我当前正在尝试删除链接列表的第一个元素。所以我写了下面的代码。 对于第一个元素,它工作正常。但它显示第二个元素的错误。
void deleteFirst(Node* head){
Node* temp = head;
head->data = temp->next->data;
head->next = temp->next->next;
free(temp);}
给出的链接列表:
2 3 4 5 6 7
第一次删除后,它向我显示:
3 4 5 6 7
第二次删除后显示给我:
a.out(78094,0x7fff92d38380) malloc:
*** error for object 0x7ffb39400370: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6
答案 0 :(得分:1)
您的温度和头部都指向相同的记忆。当您释放温度时,您也可以释放头。检查一下自己的逻辑和运气。