是否可以从visual basic 6中的接口IUnknown调用方法AddRef()或实现一些hack来增加对象引用计数器?
答案 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内存管理工作。