Wem gehört zurückgegebenes BSTR?

7

Angenommen, eine Methode von einer COM-Schnittstelle gibt den BSTR-Wert zurück. Habe ich meiner Meinung nach Recht, dass ich es freigeben muss?

Das Codebeispiel unter Ссылка macht das nicht.

Wer ist falsch?

    
Sergey Skoblikov 16.05.2009, 16:51
quelle

2 Antworten

11

Das MSDN-Beispiel ist falsch. Der Anrufer gibt bstrs aus und ein / aus. Wenn es in / out ist, musst du null oder ein gültiges bstr übergeben. Wenn es nur out ist, muss es nicht initialisiert werden.

Es ist nicht super klar von msdn com Zuteilungsregeln , aber die Der Client-Stub weist den Speicher auf Aus-Werte zu, so dass der Server dies aus Sicht des Aufrufers getan hat. Wer sonst kann es außer dem Anrufer freigeben?

    
Tony Lee 16.05.2009, 16:54
quelle
9

Tony hat Recht, aber ich wollte seine Antwort erweitern. Die Situation beschränkt sich nicht nur auf einen BSTR. Der Aufrufer ist dafür verantwortlich, Speicher freizugeben, der über Out- oder In / Out-Parameter zurückgegeben wird.

    
JaredPar 16.05.2009 17:02
quelle

Tags und Links