我写了一个函数,将处理自由的内存链表,但该函数能够释放他们,但我得到内存泄漏。请有人能告诉我,为什么这个函数能够释放我的内存,但有内存泄漏。
void free_listint(listint_t *head)
{
listint_t *temp;
temp = head;
while (head != NULL)
{
free(head);
temp = temp->next;
}
return;
}
2条答案
按热度按时间smdnsysy1#
你的while循环会检查head,但是head在循环中不会被重新分配。这可能会导致无限循环,
temp = temp->next;
最终可能会崩溃。我建议改写为
zxlwwiss2#
@Karthick显示了OP的错误和一个解决方案。
为了好玩,以下内容可能会稍微简单一些: