Visual Basic 6 でインターフェイス IUnknown からメソッド AddRef() を呼び出すか、オブジェクト参照カウンターをインクリメントするためのハックを実装することは可能ですか?
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 に答える