掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Newでインスタンスの生成を複数回すると、どのようになりますか? (ID:100976)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
※久々に答えられそうな内容なのでしゃしゃりでてきました > 【2】では新しいインスタンスが作成されていると考えてよろしいですか? はい. > 彼が言うには【2】の時点でクラスが初期化されているので問題ないというのです。 > この認識はあっているのでしょうか? 何を問題と捉えているのか曖昧です… 「クラスが初期化」されるというのは,少し厳密に考えると「違う」という回答になります. 正しくは新しいclsMember型のインスタンスが作成され(ついでに初期化される)という感じです. > 【2】の時点でどのようになっているか 最初の clsABC = New clsMember ではclsMember型のインスタンス(仮にinst_clsMemberと名付ける)が生成され, clsABCにそのインスタンスへの参照が代入されます. 次の clsABC = New clsMember でも同様にclsMember型のインスタンスが生成され, clsABCにそのインスタンスへの参照が代入されます. このとき,元々clsABCに代入されていたinst_clsMemberはどこからも参照されなくなるため, VBの内部でゴミ回収処理(GC)により破棄されます. (確かVB6は参照カウント方式で管理していたと思うので,このGCはすぐさま行われるはずだと思います) ※最初の「いろいろな内容」で,inst_clsMemberに関係する, 他のインスタンスとで循環参照が起こっている時など, GCがうまく働かない例があります.
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.