是否可以从 Visual Basic 6 中的接口 IUnknown 调用方法 AddRef() 或实现一些技巧来增加对象引用计数器?
问问题
776 次
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 回答