[836] Re:マスタングさんへ
投稿者:774RR
2007/02/20 02:13:25
話の腰を折りまくります。
>774RRさんがおっしゃっていたようにstaは番兵ですね。
リンクリストで番兵を使うというのが根底の発想として間違っている気がします。
>startは、staをさしている訳で、エラーの原因はstaは
>動的に確保されたオブジェクトではないからです。
御意なのですが、だからといって最初を除外して free するというのも間違いと思う。
tree や環状リストで番兵を使ったりはしません。
1方向リンクリストでも使わないほうが自然でしょう。
もし仮に番兵を配置するならリンクリストの末尾に置くのが適切です。
先頭に置くなら番兵とは呼ばずにダミー要素と呼ぶべき。
そして、仮に番兵/ダミー要素を使うのであれば、その番兵/ダミーも malloc() でとっておくべきです。
[813] で書いたとおり auto な番兵/ダミーを用意するのは大きな間違いです。
マルチプルインスタンスを実現しようとして
list* root1=create_list(...);
list* root2=create_list(...);
等と直したくなった場合に破綻します。
んで、この程度の話は [813] で紹介した先にて述べられ済みなのですけど。