COM インターフェイスのメソッドが BSTR 値を返すとします。それを解放しなければならないという私の意見は正しいですか?
のコード例http://msdn.microsoft.com/en-us/library/aa365382(VS.85).aspxはそれを行いません。
誰が間違っていますか?
COM インターフェイスのメソッドが BSTR 値を返すとします。それを解放しなければならないという私の意見は正しいですか?
のコード例http://msdn.microsoft.com/en-us/library/aa365382(VS.85).aspxはそれを行いません。
誰が間違っていますか?
MSDNサンプルが間違っています。発信者はbstrを解放および解放します。イン/アウトの場合は、nullまたは有効なbstrを渡す必要があります。アウトのみの場合は、初期化する必要はありません。
msdnのcom割り当てルールからはあまり明確ではありませんが、クライアントスタブはメモリをout値に割り当てるため、呼び出し元の観点からはサーバーが割り当てます。発信者以外に誰がそれを解放できますか?
トニーは正しいですが、私は彼の答えを拡張したいと思いました。状況はBSTRだけに限定されません。呼び出し元は、outまたはin/outパラメータを介して返されるメモリを解放する責任があります。