我写了这段代码,它说有错误double free or corruption(out)
,我真的不明白我在哪里搞砸了.
int main(void) {
node *list = NULL;
node *n = malloc(4 * sizeof(node));
if (n == NULL) {
return 1;
}
n[0].number = 1;
n[0].next = NULL;
list = &n[0];
n[1].number = 2;
n[1].next = NULL;
list->next = &n[1];
n[2].number = 3;
n[2].next = NULL;
list->next->next = &n[2];
n[3].number = 4;
n[3].next = NULL;
list->next->next->next = &n[3];
for (node *tmp = list; tmp != NULL; tmp = tmp->next) {
printf("%i\n", tmp->number);
}
while (list != NULL) {
node *tmp = list->next;
free(list);
list = tmp;
}
}