Was ist der richtige Weg, dies zu tun:_bstr_t Mit dem Parameter von * Typ BSTR in Funktion zu übergeben
_bstr_t description;
errorInfo->GetDescription(&description.GetBSTR());
oder:
_bstr_t description;
errorInfo->GetDescription(description.GetAddress());
Wo IError:GetDescription
ist wie folgt definiert:
HRESULT GetDescription (BSTR *pbstrDescription);
Ich weiß, ich könnte das leicht tun:
BSTR description= SysAllocString (L"Whateva"));
errorInfo->GetDescription (&description);
SysFreeString (description);
Dank
+1, die Rede davon, dass der BSTR von _bstr_t von anderen Instanzen geteilt wird, verdränge mich von allem, was direkt zugewiesen werden könnte. –
sollten Sie nicht 'Attach()' anstelle von Zuweisungsoperator verwenden? –
Wie gezeigt, weist die Funktion 'GetDescription' Speicher auf' temp' mit 'SysAllocString' zu, und dieser Speicher wird nie freigegeben. Entweder müssen Sie 'SysFreeString (temp)' aufrufen oder sicherstellen, dass 'wrap' an diesen Speicher angehängt wird und diesen freigibt. – abelenky