15/08/24 23:17:12.96 4CFfNfbx.net
>>674
すまん、その通りだ。C#ではアンマネージドコードは禁止とは知らなかった。
解放しているのはunsafeで生ポインタだけか。
インラインアセンブラが出来るというのを見た覚えがあるのだが、気のせいだったようだ。
デストラクタも継承/オーバーロード禁止だから、>>671の言うとおり、staticにしか使えない。
C++からポーティングするなら、
デストラクタ内のは全部Disposeに移動し、そこで手動で親を呼んでおけばいい気がする。
これだとクラス内だけで留まる。
リソース解放タイミングを規定したいのなら手動でDisposeを呼ぶか、usingだね。
ただ、呼ばなくてもセグフォにはならないはず。
MSDNには
> C++ 経験者が C# で開発する場合
> デストラクタ : C# は、アンマネージ リソースを確定的に解放する場合の構文が異なります。
> デストラクタ
> using ステートメント (C# リファレンス)
> URLリンク(msdn.microsoft.com)(v=VS.90).aspx
だけだから、推奨はusingのようだ。
マネージドコードだけしか使えないのなら、本質的なリークはどうやっても発生しないように思える。
一時的なリソース枯渇はあり得るけど、例えばGDIなら描画しまくるアプリ(ゲーム等)でなければあまり気にしなくてもいいのでは。