- C#, C♯, C#相談室 Part88 [転載禁止]©2ch.net
698 :デフォルトの名無しさん[sage]:2015/08/25(火) 00:42:16.41 ID:FzRJlm7d - すいません言い直します。
・C#では、正しく構成されたクラスを使用している限り、本質的なリークは発生しない。 (明示的にDisposeしなくてもいつか回収される《=Finalize時にDisposeが呼ばれる》) じゃないかな? もちろん.NET謹製のはリークしない。 自作クラスでアンマネージリソースを使う場合、MSDNによると、 ・Disposeを実装し、SafeHandleでアンマネージリソースをラップする。←こっちがオススメ ・Finalizeを実装する。 のどちらかをやっておけばいいはず。 > https://msdn.microsoft.com/ja-jp/library/498928w2(v=vs.110).aspx だからリークしてるのであれば、自作クラスの構成がまずいのだと思うのだが。 もちろんクラスの構成はC++流(デストラクタ)ではなくC#流(上記)にしないといけない。
| - C#, C♯, C#相談室 Part88 [転載禁止]©2ch.net
718 :デフォルトの名無しさん[sage]:2015/08/25(火) 22:00:39.66 ID:FzRJlm7d - >>706,717
個人的にはDisposeを使う方がお行儀がいいのは認める。 ただ、C#の思想としては、「タイミングは規定できないが、解放はシステム側で保証するから、 面倒なことを考えずに具だけに集中しろ」ということなのだと思う。 だから、クラスをきっちり書けば出来そうな気もするし、それに向けて整備していっているはず。 とはいえ、俺はGUI(描画)に使っている程度で、そんなに本格的に使っていない。 だから命中していないだけで、言われているケースがありそうだというのはなんとなく感じる。
| - C#, C♯, C#相談室 Part88 [転載禁止]©2ch.net
720 :デフォルトの名無しさん[sage]:2015/08/25(火) 22:07:38.08 ID:FzRJlm7d - >>707
アンセーフはこれ。見にくくなるが速くなる。 http://www.atmarkit.co.jp/fdotnet/csharp_abc/csharp_abc_021/csharp_abc05.html アンマネージドはVC++の機能で、SSEとかを使いたいときに使う。
| - C#, C♯, C#相談室 Part88 [転載禁止]©2ch.net
731 :デフォルトの名無しさん[sage]:2015/08/25(火) 23:57:53.14 ID:FzRJlm7d - これな。十分速いが、それでも倍違うけどね。
http://daisy64.blogspot.jp/2009/01/getpixel.html マネージドコードの例は不要だと思って省略した。 実際は#pragma unmanagedと#pragma managedでソース上で関数単位で切り替える。
|
|