Нужно ли освобождать BSTR, заполненные _Type :: get_FullName

У меня есть код, который выглядит следующим образом:

_TypePtr spType = NULL;
. . . // host the CLR and populate that type
{
BSTR fullName;
spType->get_FullName(&fullName);
wprintf(L"Got type %s\n", fullName);
}

Нужно ли освободить этот BSTR? Как мне это освободить SysFreeString ()? Если нет, то почему?

0

Решение

BSTR динамически распределяется SysAllocString (если я правильно помню имя, проверьте его!).

Существует соответствующая функция освобождения.

Просто читать документацию.


Если вы используете компилятор Visual C ++ и не планируете переносить код на другие компиляторы, вы можете использовать класс «smart BSTR», поставляемый в комплекте с Visual C ++. Я не могу точно вспомнить имя. Но что-то вроде _bstr_t, Подождите, проверяя документы … Хорошо, набрав «_bstr» в индексе, введите имя, это _bstr_t как я думал! 🙂

С использованием «умного» класса он обрабатывает освобождение для вас.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]