Пожалуйста, потерпите меня, я некоторое время был программистом на C ++.
Мне нужно знать, если я делаю это неправильно. Это работает, но я подозреваю, что это вызывает утечку памяти. У меня есть такая функция:
_bstr_t WCH2BSTR(wchar_t* st)
{
BSTR stres = SysAllocString(st);
return (_bstr_t)stres;
}
Скажем, я должен был использовать такой результат:
wcout << WCH2BSTR(wCharArr) << " done." << endl;
Приведет ли это к утечке памяти или BSTR будет удален «сборщиком мусора», как в Java?
Если это утечка памяти, как я могу предотвратить ее, не теряя возможности сделать это как однострочник? Иногда результаты WCH2BSTR сохраняются в переменной BSTR и удаляются должным образом, но я хотел бы использовать ту же функцию для конкатенации wchar_t с BSTR в однострочном режиме.
Спасибо.
SysFreeString
является необходимым требованием для использованияSysAllocString
, иначе вы правы, у вас утечка памяти. - person acraig5075   schedule 08.03.2018