我正在使用链表并填充结构,但是当我删除整个结构并尝试打印链表的内容(应该为空)时,会出现一个数字列表。我知道这可能是内存问题。有关如何修复它的任何建议?
删除整个链表的代码:
void destroy(set_elem *head)
{
set_elem *current = head;
set_elem *next;
while (current != NULL)
{
next = current->next;
free(current);
current = next;
}
head = NULL;
}
最佳答案
虽然您的删除功能正常工作,但当您执行 head = NULL;
时,它不会将调用者的头部设置为 NULL。因为您只是在修改本地指针,这会导致您稍后尝试通过检查 head
的值来打印值的逻辑。 .
要修改原始指针,请将指针传递给 head
并设置 *head=NULL;
void destroy(set_elem **head)
{
set_elem *current = *head;
/* rest is the same */
*head = NULL;
}
关于c - 删除整个链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19471482/