自由功能的问题是什么?

时间:2015-03-15 12:58:58

标签: c pointers

/*
 * 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指向的节点?(注意:假设我们有一个标题和参数列表是指向它的指针)

1 个答案:

答案 0 :(得分:3)

有几种执行路径会导致在未初始化的变量上调用free。将tmp初始化为NULL