发表评论(0)作者:不详, 平台:VB6.0+Win98, 阅读:8828, 日期:2003-08-29
Visual Basic 6中内存泄露的一个通常原因是循环引用。当对象A中有对象B中的引用,而对象B中也有对象A中的引用的时候,循环引用就有可能出现。
为了能看看这一方面的范例,可以建立一个标准的EXE VB工程。添加两个类模块,Class1 和 Class2,在Class1中添加如下的代码:
Dim objClass2 As Class2
Private Sub Class_Initialize()
Debug.Print TypeName(Me) & ".Initialize"
Set objClass2 = New Class2
Set objClass2.Class1 = Me
End Sub
Private Sub Class_Terminate()
Set objClass2 = Nothing
Debug.Print TypeName(Me) & ".Terminate"
End Sub
在Class2中添加如下的代码:
Dim objClass1 As Class1
Public Property Set Class1(ByRef NewValue As Class1)
Set objClass1 = NewValue
End Property
Private Sub Class_Initialize()
Debug.Print TypeName(Me) & ".Initialize"
End Sub
Private Sub Class_Terminate()
Set objClass1 = Nothing
Debug.Print TypeName(Me) & ".Terminate"
End Sub
为了能看看这一方面的范例,可以建立一个标准的EXE VB工程。添加两个类模块,Class1 和 Class2,在Class1中添加如下的代码:
Dim objClass2 As Class2
Private Sub Class_Initialize()
Debug.Print TypeName(Me) & ".Initialize"
Set objClass2 = New Class2
Set objClass2.Class1 = Me
End Sub
Private Sub Class_Terminate()
Set objClass2 = Nothing
Debug.Print TypeName(Me) & ".Terminate"
End Sub
在Class2中添加如下的代码:
Dim objClass1 As Class1
Public Property Set Class1(ByRef NewValue As Class1)
Set objClass1 = NewValue
End Property
Private Sub Class_Initialize()
Debug.Print TypeName(Me) & ".Initialize"
End Sub
Private Sub Class_Terminate()
Set objClass1 = Nothing
Debug.Print TypeName(Me) & ".Terminate"
End Sub