【发布时间】:2021-02-08 01:32:06
【问题描述】:
我已经实现了一个链表,我正在尝试创建一个函数,该函数从链表的头部开始,本质上将指向该结构的指针存储在 curr 中。然后它使用 free()...不幸的是我不断得到
LinkedList_Header(27343,0x1000dedc0) malloc: *** error for object 0x1007b42c0: pointer being freed was not allocated
struct node {
int data;
struct node* next;
};
struct node* initialize(int input){
struct node* head = (struct node*)malloc(sizeof(struct node));
head->data = input;
head->next = NULL;
return head;
}
void freeing(struct node* head){
struct node* curr = head;
while(curr->next != NULL){
free(curr);
}
free(curr);
}
【问题讨论】:
-
你的 curr 在循环内部总是相同的。你没有 next 循环
-
将您的代码搁置几分钟,然后回来阅读您实际编写的内容,而不是您认为您编写的内容...
-
在一个循环中,只要当前节点不为NULL,就保存当前节点的“next”指针,释放当前节点,然后使保存的“next”成为新的当前节点。
-
您引用的错误似乎不是编译器错误。在“不编译”旁边,这让我感到困惑。