我有一个使用 BSTR 的 COM 代码。
在使用 ::SysFreeString() 时应用程序崩溃
但是在 WINDOWS2003、WIN7、WINXP 等中同样有效。
关于导致问题的原因或可能出错的任何想法。示例代码如下
class CFoo::IUser
{
BSTR UserName;
}
HRESULT CBar::FooMethod(VARIANT *vOut)
{
//create interface, variant and fill the object.
BSTR bstrname = ::SysAllocString(_T("Username"));
//use bstrname to fill interface structure.
//finished using now deallocate memory
::SysFreeString(bstrname); // crashing here only in windows 2008 R2
}