繁体   English   中英

链接列表删除导致Free Heap块…释放后在…修改

[英]Linked list deletion causes Free Heap block … modified at … after it was freed

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

释放后,在011B7F38处修改了免费堆块011B7EF8。

这是创建代码:

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是要删除的节点,并将其传递给如下所示的delete函数:

void deletePlanet(planet_type *currentPlanet)

如果我删除“ free(currentPlanet)”行,则代码有效。

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

确保删除节点/元素/任何对象时,在删除当前节点之前先将其指向下一个指针。 否则,在删除当前指针后,您将无法再访问下一个指针,因为您将没有原始指针。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM