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时发生如图的错误。
解决方法:对那些会释放字符串的函数,调用时不要用成员变量传入,而应使用临时变量。