这是任务。它被赋予一个链表,释放所有内存并设置为NULL
。
这是我的功能:
void free_list(struct Node *node)
{
while (node)
{
free(node);
node=node->next;
}
}
它没有输出错误,只是不做任何事情。还有一件事,如何检查内存是否被释放?
答案 0 :(得分:0)
提示出现了什么问题,而不是示例代码,因为这是作业......
node
。在释放之前存储node->next
的值。Node
指针。如果你想NULL
调用者的指针,请使用指向指针的指针。没有可移植的方法来检查内存是否被释放,但是如果要在程序退出时检查没有内存泄漏,则可以调查valgrind之类的工具。
请注意,您无法检查内存位置的内容,以确保自己已释放内存。调用free
只是将内存的所有权传递回系统;它可能会在将来的任何时候重新分配(及其值更新)。
答案 1 :(得分:0)
答案 2 :(得分:0)
void free_list(struct Node **head)
{
struct node *nnode, *cnode;
cnode = *head;
while (cnode)
{
nnode = cnode->next;
free(cnode);
cnode = nnode;
}
*head = NULL;
}
这样称呼.. ,,
free_list(&head);
修改强>
node=node->next;
,必须在释放节点之前存储下一个指针。