gpt4 book ai didi

c - 链表删除导致 Free Heap block ........ 被释放后在 .... 处修改

转载 作者:行者123 更新时间:2023-11-30 17:39:46 25 4
gpt4 key购买 nike

我有一个链接列表,每当我尝试释放根目录时,都会导致标题中提到的错误。

释放堆 block 011B7EF8 被释放后在 011B7F38 处进行了修改。

这是创建代码:

if (root == NULL) {
root = (planet_type*)malloc(sizeof(planet_type));
/* Here I add data to the struct that root points to */
}

删除:

if (currentPlanet == root) {
root = currentPlanet->next;
free(currentPlanet);
}

其中 currentPlanet 是要删除的节点,并传递给删除函数,如下所示:

void deletePlanet(planet_type *currentPlanet)

如果我删除“free(currentPlanet)”行,那么代码就可以工作。

这不是完整的代码。对于root之后的节点,程序按预期工作,并且删除过程是相同的。

最佳答案

确保当您删除节点/元素/其他内容时,在删除当前节点/元素/其他内容之前,先将指针指向下一个节点/元素。否则,删除当前指针后,您将无法再访问下一个指针,因为您将不再拥有原始指针。

另外两件事:使用 gdbvalgrind,这是所有 C 作业的两个最佳工具。

关于c - 链表删除导致 Free Heap block ........ 被释放后在 .... 处修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21705273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com