/*
* delete the first mode whose num match number in the list
*/
void delete(listnode *list, int num)
{
listnode *item, *tmp, *prev;
item = list;
while (item->next != NULL) {
if (item->next->num == num) {
tmp = item->next;
item->next = item->next->next;
} else {
item = item->next;
}
}
/*free(tmp);*/
}
所以,如果我自由评论,它运作良好,否则,它只会向我发射核心转储,我应该怎么处理tmp指向的节点?(注意:假设我们有一个标题和参数列表是指向它的指针)
答案 0 :(得分:3)
有几种执行路径会导致在未初始化的变量上调用free
。将tmp
初始化为NULL
。