* 強大的文本 *我創建了一個鏈表用C稱爲結腸與以下功能的幫助:在C中釋放一個簡單鏈表的內存的兩種方法?
struct ilist_node {
struct ilist_node * rest;
int first;
};
typedef struct ilist_node *ilist;
ilist icons(int in, ilist il) {
ilist r = malloc(sizeof(struct ilist_node));
r->first = in;
r->rest = il;
}
然後我增加與圖標列表創建號碼列表
在那之後,我試圖通過
while (lon!= NULL) {
ilist tmp = lon->rest;
printf(" %d\n",lon->first);
free(lon);
lon = tmp;
}
我可以理解W¯¯打印每個元素的列表,並釋放被列表使用的內存上面這個函數起作用。 (我搜索瞭如何釋放內存,這似乎是受歡迎的答案)。但出於好奇,我試了另一個:
ilist tmp = lon;
while (lon != NUll) {
printf(" %d\n",lon->first);
lon = lon->rest;
}
idelete(tmp);
它也有效。所以我有點困惑。如果最後一個工作正常,那麼爲什麼我需要通過列表並釋放每個節點?
目前尚不清楚您是否想要評論循環列表或釋放其空間。如果我認爲idelete真的是我們需要比較的,那麼請張貼idelete的來源 – gbulmer 2012-03-20 21:36:38
ahhh謝謝。它是因爲我使用由我的教授給予的idelete而不是內置的刪除。愚蠢的錯誤 – x7qiu 2012-03-20 21:41:04
與往常一樣,問這個問題有幫助! - ) – gbulmer 2012-03-20 21:56:30