mfc110d.dll!ATL::CSimpleStringT<char,1>::~CSimpleStringT<char,1>() 行 291

清泛原创
> msvcr110d.dll!_CrtIsValidHeapPointer(const void * pUserData) 行 2036 C++
  msvcr110d.dll!_free_dbg_nolock(void * pUserData, int nBlockUse) 行 1322 C++
  msvcr110d.dll!_free_dbg(void * pUserData, int nBlockUse) 行 1265 C++
  mfc110d.dll!CAfxStringMgr::Free(ATL::CStringData * pData) 行 169 C++
  mfc110d.dll!ATL::CStringData::Release() 行 118 C++
  mfc110d.dll!ATL::CSimpleStringT<char,1>::~CSimpleStringT<char,1>() 行 291 C++
  mfc110d.dll!ATL::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char> > >::~CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char> > >() 行 1241 C++
...
 

报错如图,从堆栈来看是CString释放的时候崩溃。导致这种情况的原因可能有:

定义了CString的类成员,但是在传入其他函数使用过程中,被释放过(如 WritePrivateProfileString 函数,会对传入的字符串进行释放),然后该类在析构时再次释放CString时发生如图的错误。

解决方法:对那些会释放字符串的函数,调用时不要用成员变量传入,而应使用临时变量。

CSimpleStringT

分享到:
评论加载中,请稍后...
创APP如搭积木 - 创意无限,梦想即时!
回到顶部