2009-05-16 6 views

Antwort

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 allocation rules, aber der Client-Stub reserviert den Speicher auf aus Werte so aus der Sicht des Aufrufers der Server tat. Wer kann es sonst befreien, aber der Anrufer?

+1

Ich fand es immer sehr bequem, '_bstr_t' zu verwenden, anstatt direkt mit' BSTR' zu arbeiten. – wilx

+0

Ja, aber nicht jeder ist bereit, an Visual Studio festzuhalten. –

9

Tony ist richtig, 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.

Verwandte Themen