原因是程序对话框中使用了CMFCEditBrowseCtrl控件,当退出程序时,崩溃在afxvisualmanager.cpp文件void CMFCBaseVisualManager::CleanUpThemes()函数的如下位置:
if (m_hThemeToolBar != NULL)
{
.......
}
而如果去掉该控件,则一切正常。经过查看栈信息,可以知道该CleanUpThemes函数在执行第二次时导致崩溃。以前知道vc2010新推出的MFC控件有内存泄露问题,在以往的项目中也碰到过,而且解决了。但是将以前项目代码翻出来看了后,照着进行相关操作问题还是依旧,看来与之前的问题有差异。
google了好几次,发现一个使用CMFCVisualManager导致内存泄露问题,抱着试试看的心情尝试了一下,问题解决,特此记录:
if (m_hThemeToolBar != NULL)
{
.......
}
而如果去掉该控件,则一切正常。经过查看栈信息,可以知道该CleanUpThemes函数在执行第二次时导致崩溃。以前知道vc2010新推出的MFC控件有内存泄露问题,在以往的项目中也碰到过,而且解决了。但是将以前项目代码翻出来看了后,照着进行相关操作问题还是依旧,看来与之前的问题有差异。
google了好几次,发现一个使用CMFCVisualManager导致内存泄露问题,抱着试试看的心情尝试了一下,问题解决,特此记录:
只需要在主程序的ExitInstance函数中增加CMFCVisualManager::DestroyInstance(TRUE);语句即可解决问题。
转自:http://china.ygw.blog.163.com/blog/static/687197462013429103016138/