实现链表时出现段错误

时间:2014-04-07 18:43:43

标签: c

我试图诋毁一个链接列表但是应用了一个错误,分段错误,我不知道为什么会这样,以及如何解决这个问题;这是我的代码:

    void delete_list(LIST L)
    {
        position p;

        p = L->next;
        L->next = NULL;
        while(p != NULL)
        {
            free(p);
            p = p->next; 
        }
    }

它应该在删除或空的某个地方,但我不知道如何修复它,任何人都可以提供帮助,谢谢

1 个答案:

答案 0 :(得分:2)

delete_list

  free(p);
  p = p->next;

你释放内存,然后尝试访问它。释放tmp时,您需要一些p->next指针,该指针将保留p

也许是这样的:

    position p,t;

    p = L->next;
    L->next = NULL;

    while( p )
    {
        t = p;
        p=p->next;
        free(t);
    }