如何解决释放结构
我身上有一个链表结构,我使用一个节点结构来帮助我存储数据并知道每个节点指向的位置。在创建列表时,我做到了:
struct list {
struct node *Head;
struct node *Tail;
}
struct node{
int val;
struct node * next;
}
struct list create_list(){
struct list new_list;
new_list = malloc(sizeof(struct list));
}
然后,当我尝试释放分配给我的列表时,我这样做了
void free_list(struct list linked_list){
free(linked_list);
}
但是,我意识到我可能已经错误地分配了malloc,因为当您分配malloc时,您需要将其分配给一个指针。当我想释放最初为之分配的链表时,什么都没有改变。
我认为这可能是因为我发送到free()的linked_list不是指针,因此未进行任何更改。我尝试在其中添加&和*,但最终出现错误。...
感谢任何提示或帮助。
编辑:
在结构列表上修复了错字。
这是硬件,所以我不能更改函数的参数,这使我很难释放我制作的链表。这是因为free_list()函数无法将其参数更改为指针链接列表,因此我不知道该怎么做。
当我在create_list函数中为链接列表进行分配时,我也会记下。
解决方法
可以按值传递链接列表,而不是在堆上传递很小的东西。
这更像您想要的吗?
struct list create_list(){
struct list new_list = { NULL,NULL };
return list;
}
void free_list(struct list linked_list){
struct node *next;
for (struct node *node = linked_list.Head; node; node = next;)
{
temp = node->next;
free(node);
}
}
因此仅释放分配有malloc()
的列表节点。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。