使用指针和非指针变量释放struct

时间:2010-09-05 19:04:57

标签: c memory struct

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

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

我有一个遍历结构的函数,并像这样释放其成员:

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

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

是的。为s分配内存时,为这三个分配了内存:

指向char(值)的指针
整数(直线)
指向结构列表的指针(下一个)

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