はじめまして。初歩的な質問で申し訳ないのですが、
VB6.0の場合、Newしたオブジェクトに対して再度Newした場合、メモリ上にどのようにあつかわれるのでしょうか。
Newするごとに新しいインスタンスが生成されるのでしょうか。
#下記の2つの違いはありますか?
①
Dim a As Object
For i = 0 To 100
Set a = New Class1
Set a = Nothing
Next
②
Dim a As Object
For i = 0 To 100
Set a = New Class1
Next
Set a = Nothing
変数に、別のオブジェクトが代入された場合、
前に参照していたオブジェクトの参照カウントが減らされ、
新たに代入されたオブジェクトの参照カウントが増加します。
その結果、前に参照していたオブジェクトの参照カウントが
0 になったのだとしたら、どこからも参照されていないと判断され、
自動的に解放されます。
> #下記の2つの違いはありますか?
Class1 に下記のコードを加えて、ステップ実行すれば分かるかと。
Private Sub Class_Initialize()
Debug.Print "作成:"; TypeName(Me), ObjPtr(Me)
End Sub
Private Sub Class_Terminate()
Debug.Print "解放:"; TypeName(Me), ObjPtr(Me)
End Sub
魔界の仮面弁士さんご回答ありがとうございます。
代入した場合は、参照カウントが追加されてから減らされるのですね。
2つの違いも理解できました。
本当にありがとうございます。
ツイート | ![]() |