我正在编写链接列表,并在删除节点时尝试释放内存分配 . 但是,经过几个小时的尝试,我似乎无法获得干净的valgrind输出 .
void * pop(struct List *list)
{
if(list->head == 0){
return 0;
}
struct Node * tempNode = list->head->next;
free(list->head);
list->head = tempNode;
...
}
我正在分配空间说:
addNode(struct List *list, void *element){
struct Node *node;
node = (struct Node *)malloc(sizeof(node));
....
}
基本上在pop函数中我想要取出列表的头部并使头部的下一个节点成为新的头部 . 我想释放给予头部的记忆 .
谢谢你的帮助
3 回答
哇,你的
malloc
不正确 . 你有:你需要的是:
在原始代码中,您只为指针分配足够的内容 . 但是你正在尝试分配一个
Node
对象 .为
node
指向的东西分配空间 .不要转换
malloc
的返回值 . 这样做可以掩盖#include <stdlib.h>
的失败 .看来是对的 . 或者其他地方是否有泄漏?或者您将元素本身释放为传入的参数?