投稿時間: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--
|