0

私は次のようなコードを持っています-

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 に初期化することは可能ですか? アプリケーションがクラッシュする理由を見つけるのを手伝ってくれる人はいますか?

4

2 に答える 2

-1

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);
  }


}
于 2016-06-30T20:53:16.330 に答える