VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 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--


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -