使用Cleanup方法避免循环引用

ZDNet软件频道 时间:2003-07-24 作者:ZDNet China |  我要评论()
本文关键词:vb
Visual Basic 6中内存泄露的一个通常原因是循环引用。当对象A中有对象B中的引用,而对象B中也有对象A中的引用的时候,循环引用就有可能出现。
本文译自Builder.com,未经许可请勿转载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


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134