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


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch