ゲームプログラミング相談室
■ このスレッドは過去ログ倉庫に格納されています
0852名前は開発中のものです。
02/10/29 20:44ID:???> 解放したポインタにNULL代入するのは作法でしょう。
気休めに過ぎない作法なんか、やめとけよ……。
だいたい複数のポインタが同一の領域を指している環境では、そんな手は
使えないし。
> どうしてもめんどうなら
その程度の「手間」で済むのは free_something() なんてオモチャみたいな
コードだから。現実に面倒なデータ構造を操作するコードだと、そんな単純
にはいかんよ。
特にデータ構造が複雑な場合には、そのデータを辿るのがクリティカルパス
になるケースが多い(逆にクリティカルじゃなければ、そんな頑張って面倒
なデータ構造をメンテナンスなんかしないで、単純配列を全部検索、とかで
済ませられる)。
そこで「すべての要素に pointer の pointer を持たせて、二回 dereference
しましょう」ってのはかなり厳しいよ。
> というか、そういうところで面倒くさがる人はC++を使うべきでは。
全部 boost::shared_ptr にするとか? それは性能上の問題に加えて、解放の
タイミングを計るのが難しくなる(解放したつもりが、余計なところで shared_ptr
が一つ生きてた、とか)という問題がある。
もちろん「ここで最後の筈」ってことで assert() 入れてチェックすることはでき
るんだが、assert() に引っかかったときに
じゃあ、いったいどこで参照が残ってるんだ?
っつーのは、やっぱり探すのが大変だよ。
■ このスレッドは過去ログ倉庫に格納されています