[831] マスタングさんへ
投稿者:負け組一号
2007/02/20 02:13:25
レスありがとうございます
返信遅くてすいませんでした。
自分自身、リストの有用性自体をはっきりわかってないと思っています。
せいぜい「線形リストなら、文字を打ち込んで行ってもチェーンのつなぎ換えで
ソートできて便利だな~」という程度の知識です。
ところで
>負け組一号さんのサンプルで、startという変数が重要になります。
>どこかで(例えば関数で)free処理をするのでしょうが、
>start変数は、listの先頭を表していますので、これさえあれば
>listにつながっているデータは全てfreeできます。
>関数でfreeするなら、引数でstartを渡してあげればOKです
で、free(start)してみたら、エラーになってしまい、ただ
free(start->next)としたら通りました。
まぁ、free(start)が通らないのは、僕の理解不足からくる見当違いな事をしてるせい
だと思いますが、free(start->next)としたとき、チェーンで繋がった先のNULLに至るまで
にmalloc()で割り当てたそれぞれのメモリ領域も解放してくれるのかが僕の理解不足の
点です。free(start->next)したとき、next側のメモリだけ解放され、後に続く
NULLまでのmalloc()で取った領域は動かされず、残ったままなら
マスタングさんの言う
>現在のlistのnextの情報を先にとっておきます。
>そして、現在のlistをfree()します。
>その処理を現在のカーソルがNULLになるまで繰り返します。
>つまり、nextがNULLになるまで繰り返すのです。
という方法になるのか。と納得を得たしだいです。
まだ、ちゃんと理解できてないと自分自身思いますので、まだまだ精進精進だと思って
います。