>>841
> 解放したポインタにNULL代入するのは作法でしょう。
気休めに過ぎない作法なんか、やめとけよ……。

だいたい複数のポインタが同一の領域を指している環境では、そんな手は
使えないし。

> どうしてもめんどうなら
その程度の「手間」で済むのは free_something() なんてオモチャみたいな
コードだから。現実に面倒なデータ構造を操作するコードだと、そんな単純
にはいかんよ。

特にデータ構造が複雑な場合には、そのデータを辿るのがクリティカルパス
になるケースが多い(逆にクリティカルじゃなければ、そんな頑張って面倒
なデータ構造をメンテナンスなんかしないで、単純配列を全部検索、とかで
済ませられる)。

そこで「すべての要素に pointer の pointer を持たせて、二回 dereference
しましょう」ってのはかなり厳しいよ。

> というか、そういうところで面倒くさがる人はC++を使うべきでは。
全部 boost::shared_ptr にするとか? それは性能上の問題に加えて、解放の
タイミングを計るのが難しくなる(解放したつもりが、余計なところで shared_ptr
が一つ生きてた、とか)という問題がある。

もちろん「ここで最後の筈」ってことで assert() 入れてチェックすることはでき
るんだが、assert() に引っかかったときに

 じゃあ、いったいどこで参照が残ってるんだ?

っつーのは、やっぱり探すのが大変だよ。