2010-09-05 154 views
2

我想實現鏈接列表與C結構,我用malloc分配一個新的節點,然後分配空間爲value,所以我一直在想如何釋放結構一次我與他們所做的,我的結構是這樣的:釋放結構與指針和非指針變量

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

我有一個通過結構和自由及其成員這樣走的函數:

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

我的問題是,這是否也免費int line

回答

3

是的。

int line是該結構的一部分,因此在釋放結構時可以釋放它。 char *value也是如此。但是,這不會釋放內存,因此您需要分別撥打free

1

是的。當你對於s分配的內存是分配給這三個內存:

指針爲char(值)
整數(線)
指針結構LLIST(下)

當你釋放S,所有的存儲都消失了(包括線路的內存)。