【问题标题】:Freeing struct with pointer and non-pointer variables使用指针和非指针变量释放结构
【发布时间】:2010-09-05 19:04:57
【问题描述】:

我正在尝试使用 c struct 实现链表,我使用 malloc 分配一个新节点然后为value 分配空间,所以我一直在考虑如何在完成它们后释放结构,我的结构是这样的:

typedef struct llist {
     char *value;
     int line;
     struct llist *next;
} List;

我有一个函数可以遍历结构并释放其成员,如下所示:

free(s->value);
free(s);

我的问题是,这是否也释放了int line

【问题讨论】:

    标签: c memory struct


    【解决方案1】:

    是的。

    int line 是结构的一部分,因此在释放结构时会被释放。 char *value 也是如此。但是,这不会释放value 指向的内存,这就是为什么您需要为此单独调用free

    【讨论】:

      【解决方案2】:

      是的。当您为 s 分配内存时,它为这三个分配内存:

      指向字符(值)的指针
      整数(行)
      指向结构 llist 的指针(下一个)

      当您释放 s 时,所有存储空间都消失了(包括行内存)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-07-27
        • 2017-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多