У меня есть код, который выглядит следующим образом:
_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 ()? Если нет, то почему?
BSTR
динамически распределяется SysAllocString
(если я правильно помню имя, проверьте его!).
Существует соответствующая функция освобождения.
Просто читать документацию.
Если вы используете компилятор Visual C ++ и не планируете переносить код на другие компиляторы, вы можете использовать класс «smart BSTR», поставляемый в комплекте с Visual C ++. Я не могу точно вспомнить имя. Но что-то вроде _bstr_t
, Подождите, проверяя документы … Хорошо, набрав «_bstr» в индексе, введите имя, это _bstr_t
как я думал! 🙂
С использованием «умного» класса он обрабатывает освобождение для вас.
Других решений пока нет …