У меня есть следующий код
void Test()
{
BSTR aBstr = ::SysAllocString(L"blah");
PrintBSTR(aBstr);
::SysFreeString(aBstr);
}
void PrintBSTR(BSTR _aBstr)
{
PrintWstring(_aBstr);
}
void PrintWstring(std::wstring _aWstring)
{
std::wcout << _aWstring << std::endl
}
Это хорошо работает для отладки, но я получаю повреждения памяти в выпуске. На самом деле, я получаю плохой указатель, когда нахожусь в PrintWstring
, а _aWstring
содержит мусор. Я предполагаю, что SysAllocString
не очень хорошо ладит с литералами. Есть идеи?