1

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

4

2 回答 2

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

您可能还需要执行与此相反的操作来释放,否则您将遇到某种内存泄漏。

于 2011-08-25T12:50:11.747 回答
2

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

  Dim ReferenceHolder As Variant

然后让 AddRef() 被一个简单的赋值调用

  Set ReferenceHolder = someObject

相反,让 Release() 被调用

  Set ReferenceHolder = Nothing

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

于 2011-08-25T11:47:46.957 回答