VB.NET で ListーIterator をコードしたのですが、メモリーリーク
していないかなかなか確かめられないので質問します。
AAA= NEW CLASSA
で AAAを作成後、利用して 、以降 さらに
AAA= NEW CLASSA
で別の用途に使うと、先に使ったAAAの情報は、(不要なのだが)
どうなるのですか?
(1)システムが監視して、指し示す親無し子はFree してくれる.
(2)プログラムが終わるまでメモリーは占有される。
プログラム終了時に Free される。
(3)IPLしないとフリーされない。
(1)以外の場合は、C++でいう Destructer 関数を
使うことが必要(3)は必須
の場合 Finalize() でOK?
また Aの要素に CLASSBを生成してこれ保持していたとすると
ClassB のFINALIZE() も CLASSA のFINALIZE
で自動的に実行かれるのでしょうか?
親無し子は自動的にFreeして 適当に GAVAGE COLLECTION
が呼ばれるなんて期待のし過ぎでしょうか?
親無し子= 当該 Instanceのアドレスを参照しているところが無い
以上
複雑です
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconautomaticmemorymanagement.asp
をご覧下さい。
最初のAAAは次の AAA= NEW CLASSA が来て既に参照が終わっているので、
AAAがアンマネージ リソースで無かったらいずれ適当な時期にランタイムの
ガベージ コレクタがメモリーを解放する。
AAAがアンマネージ リソースだったらDisposeで明示的に開放する。
ねろさま
よく分かりました
安心しました。