我有以下代码
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
}
它适用于Debug,但我在Release中遇到内存损坏。实际上,当我进入PrintWstring
时,我得到一个坏指针,而_aWstring
包含垃圾。我猜测SysAllocString
与文字的关系并不好。有什么想法吗?
答案 0 :(得分:2)
将文字传递给SysAllocString
没有错。