7

COM インターフェイスのメソッドが BSTR 値を返すとします。それを解放しなければならないという私の意見は正しいですか?

のコード例http://msdn.microsoft.com/en-us/library/aa365382(VS.85).aspxはそれを行いません。

誰が間違っていますか?

4

2 に答える 2

12

MSDNサンプルが間違っています。発信者はbstrを解放および解放します。イン/アウトの場合は、nullまたは有効なbstrを渡す必要があります。アウトのみの場合は、初期化する必要はありません。

msdnのcom割り当てルールからはあまり明確ではありませんが、クライアントスタブはメモリをout値に割り当てるため、呼び出し元の観点からはサーバーが割り当てます。発信者以外に誰がそれを解放できますか?

于 2009-05-16T16:54:45.527 に答える
9

トニーは正しいですが、私は彼の答えを拡張したいと思いました。状況はBSTRだけに限定されません。呼び出し元は、outまたはin/outパラメータを介して返されるメモリを解放する責任があります。

于 2009-05-16T17:02:36.677 に答える