【发布时间】:2020-12-03 16:14:18
【问题描述】:
我在从循环双向链表中删除时遇到问题。我尝试了这里提到的各种不同的方法,但它们都会导致某种错误。在这里,我收到一条错误消息“在 tcache 2 中检测到双重空闲”
void delete_list(Node *node)
{
Node *pt;
while(node != NULL){
pt = node;
node = node->next;
free(pt);
}
}
【问题讨论】:
-
@ProudFrog1337 提供重现问题的最小完整程序。
-
这不是minimal reproducible example,但问题很明显:你有一个循环列表,你正在检查一个不存在的 NULL,最终
node循环回到以前的空闲会记忆的。将node->prev->next指针设置为 NULL,然后运行您的遍历。
标签: c list doubly-linked-list circular-list function-definition