投稿日 | : 2005/05/13(Fri) 22:28 |
投稿者 | : 魔界の仮面弁士 |
Eメール | : |
URL | : |
タイトル | : Re^2: メソッドの戻り値を配列にするとメモリリークする? |
標準EXEプロジェクトでテストしてみました。
============ Form1 ============
Option Explicit
Private Sub Command1_Click()
Debug.Print "--Start--"
Proc
Debug.Print "--End--"
End Sub
Private Sub Proc()
Dim i As Long, C As Class1
Dim V As Variant
Set C = New Class1
For i = 1 To 5
Call C.Test '★パターン1★
'V = C.Test '★パターン2★
Next
Set C = Nothing
End Sub
Private Sub Form_Terminate()
Debug.Print "--Terminate--"
End Sub
Private Sub Form_Unload(Cancel As Integer)
Debug.Print "--Unload--"
End Sub
============ Class1 ============
Option Explicit
Public Function Test() As Class2()
Dim X(0) As Class2
Set X(0) = New Class2
Test = X
Set X(0) = Nothing
End Function
============ Class2 ============
Option Explicit
Private ID As Long
Private Sub Class_Initialize()
ID = Int(Rnd() * 1000000)
Debug.Print "Open: ", ID
End Sub
Private Sub Class_Terminate()
Debug.Print "Close:", ID
End Sub
--------------------
上記を実行すると、当方では以下のような結果になりました。
★パターン1★
--Start--
Open: 705547
Open: 533424
Open: 579518
Open: 289562
Open: 301948
Close: 301948
--End--
--Unload--
--Terminate--
Close: 289562
Close: 579518
Close: 533424
Close: 705547
★パターン2★
--Start--
Open: 705547
Open: 533424
Close: 705547
Open: 579518
Close: 533424
Open: 289562
Close: 579518
Open: 301948
Close: 289562
Close: 301948
--End--
--Unload--
--Terminate--