使用指针和非指针变量释放结构

Amm*_*mar 2 c memory struct

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

typedef struct llist {
     char *value;
     int line;
     struct llist *next;
} List;
Run Code Online (Sandbox Code Playgroud)

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

free(s->value);
free(s);
Run Code Online (Sandbox Code Playgroud)

我的问题是,这也免费int line吗?

Oli*_*rth 5

是的。

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