-1
我试图释放这些链表,但我没有收到编译错误,但valgrind说“30个分配,14个释放,6,377字节分配”。 不应该用这个函数擦除列表中的所有分配。在c中免费链接列表
void free_mem(struct medico *head_m, struct paciente *head_p , struct consulta *head_c)
{
struct medico *tmp_m = NULL;
struct paciente *tmp_p = NULL;
struct consulta *tmp_c = NULL;
while (!head_m) {
tmp_m = head_m->next;
free(head_m);
head_m = tmp_m;
}
while (!head_p) {
tmp_p = head_p->next;
free(head_p);
head_p = tmp_p;
}
while (!head_c) {
tmp_c = head_c->next;
free(head_c);
head_c = tmp_c;
}
}
请构造一个[最小测试用例](http://stackoverflow.com/help/mcve)。 –
一旦你重写'while()'循环到'for(;;)'循环中,你会看到你做错了什么。 – wildplasser