VB6中的AddRef()

时间:2011-08-25 10:58:25

标签: com vb6 reference reference-counting

是否可以从visual basic 6中的接口IUnknown调用方法AddRef()或实现一些hack来增加对象引用计数器?

2 个答案:

答案 0 :(得分:3)

如果您试图人为地增加参考计数器(在VB6完成的自动引用计数之外),那么您可以执行以下操作:

Public Sub AddOneToRefCount(target As Object)

    Dim tempObj As Object
    Set tempObj = target 'VB6 calls AddRef for you here

    Call CopyMemory(ByVal ObjPtr(tempObj), 0&, 4&) 'trick VB into not calling Release

End Sub

您可能需要实现相反的反向释放,否则您将获得各种内存泄漏。

答案 1 :(得分:2)

我很确定VB6不支持直接访问IUnknown方法。但解决方法很简单。将此声明添加到模块:

  Dim ReferenceHolder As Variant

然后通过简单的赋值来调用AddRef()来调用

  Set ReferenceHolder = someObject

相反,使用

获取Release()以进行调用
  Set ReferenceHolder = Nothing

这是正常的VB6内存管理工作。