* 強いテキスト Cは、以下の機能の助けを借りて、経度と呼ばれるに私がリンクリストを作成*:私は番号のリストを作成するアイコンのリストをインクリメントその後、 Cで単純なリンクリストのメモリを解放する2つの方法は?
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;
}
わかりますこの機能は上で動作します。 (私はメモリを解放する方法を探せ、これは一般的な答えと思われる)。しかし、好奇心のうちに私は別のものを試しました:
ilist tmp = lon;
while (lon != NUll) {
printf(" %d\n",lon->first);
lon = lon->rest;
}
idelete(tmp);
そしてそれも動作します。だから少し混乱している。最後のものが動作する場合、なぜリストを通過してすべてのノードを解放する必要がありますか?
リストをループしてコメントを付けるのか、そのスペースを解放するのかは明確ではありません。私はideleteが本当に私たちが比較する必要があると仮定した場合、ideleteのソースも投稿してください – gbulmer
ああ、ありがとう。うん、それは私の理想的な私の教授によって与えられたideleteを使用しているので、組み込みの削除の代わりに。愚かな間違い – x7qiu
よくあることですが、質問すると助けになります! - ) – gbulmer