我正在尝试使用c struct实现链接列表,我使用malloc分配一个新节点,然后为value
分配空间,所以我一直在考虑如何在完成后释放结构和他们一起,我的结构看起来像这样:
typedef struct llist {
char *value;
int line;
struct llist *next;
} List;
我有一个遍历结构的函数,并像这样释放其成员:
free(s->value);
free(s);
我的问题是,这是否也释放了int line
?
答案 0 :(得分:3)
是
int line
是结构的一部分,因此在释放结构时会被释放。 char *value
也是如此。但是,这并没有释放value
指向的内存,这就是为什么你需要单独调用free
。
答案 1 :(得分:1)
是的。为s分配内存时,为这三个分配了内存:
指向char(值)的指针
整数(直线)
指向结构列表的指针(下一个)
当你释放s时,所有存储都消失了(包括行内存)。