C#, C♯, C#相談室 Part52
at TECH
285:デフォルトの名無しさん
09/04/22 19:23:50
>>283
C++なんかだと、COMやスマートポインタを使って、リファレンスカウンタで生存管理をしているんだが
この方式だと、参照がなくなると同時に解放処理がされる。
対して、ガベージコレクタを使った.NETでは解放処理はメモリーが尽きたとき。
で、C++では参照がなくなると同時に解放処理を行う事を前提に組んであるケースが多いんだ。
だからC++の場合ちゃんとリファレンスカウンタで管理されているファイルシステムオブジェクトなどはこのタイミングでClose処理もされるのでCloseを忘れていても大丈夫
アンマネージをラップしたクラスを作るとこれが問題になることがある、これ明示的に開放する関数がDisposeだよという意味。
あくまでもラップした先のオブジェクトの解法、ラッパ事態はマネージドなので、ガベージコレクタで解放される。
たとえば.NETでStream系のオブジェクトでこれを忘れていると、Closeしわすれているとガベージコレクタで回収されるまでOpenされっぱなし。
次ページ続きを表示1を表示最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4322日前に更新/229 KB
担当:undef