微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

释放结构

如何解决释放结构

我身上有一个链表结构,我使用一个节点结构来帮助我存储数据并知道每个节点指向的位置。在创建列表时,我做到了:

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 举报,一经查实,本站将立刻删除。