为什么链接列表会出现Seg Fault?

时间:2016-12-20 10:37:31

标签: c pointers linked-list

如果在insertAfter之后调用insertBefore或者多次调用insertAfter,则以下代码会导致分段错误。

struct node {
    struct node *previous;
    struct node *next;
    char item[];
};

typedef struct node node;

struct list {
    node *first;
    node *current;
    node *last;
    int SizeOfData;
};

list *newList(int b) {
    list *list = malloc(sizeof(list));
    node *sentnode = malloc(sizeof(node));
    sentnode->previous = sentnode;
    sentnode->next = sentnode;
    list->first = sentnode;
    list->current = sentnode;
    list->last = sentnode;
    list->SizeOfData = b;
    return list;
}

使用的列表是:

return $resource(baseURL+'client/:id',{id: youridhere} ,{'update':{method:'PUT'}});

1 个答案:

答案 0 :(得分:2)

您忘记设置previous的{​​{1}}和next指针。 newNode中还有另一个错误(更改了行)。

insertAfter