我有一个代码,就像-
void CSomeClass::Remove()
{
BSTR tempStr = NULL;
while(!m_list.IsEmpty()) //m_list is a CSomeClass member of type CList<BSTR, BSTR>
{
tempStr = m_list.RemoveHead(); //application crash here!!
if(NULL==tempStr)
continue;
}
SysFreeString(tempStr);
}我不确定为什么应用程序会崩溃。是否可以使用赋值运算符将BSTR初始化为另一个BSTR?有人能帮我找出应用程序崩溃的原因吗?
发布于 2018-02-22 17:38:43
是。可以将BSTR赋给另一个BSTR变量。BSTR实际上是实际数据的起始地址。
这里的问题是RemoveHead()函数,而不是赋值。请查看完整的堆栈跟踪或仅将调试器附加到您的程序以进一步调试此问题。
发布于 2016-07-01 04:53:16
将SysFreeString放入循环中
void CSomeClass::Remove()
{
BSTR tempStr = NULL;
while(!m_list.IsEmpty()) //m_list is a CSomeClass member of type CList<BSTR, BSTR>
{
tempStr = m_list.RemoveHead(); //application crash here!!
if(NULL==tempStr)
continue;
SysFreeString(tempStr);
}
}https://stackoverflow.com/questions/38122413
复制相似问题