当关闭一个MFC程序时(点击右上角的叉叉),出现Debug Assertion Failed!的提示。程序其他时候跑的挺好,就是关闭这一下出现这个bug。找到弹出assertion位置的代码如下:CCmdTarget::~CCmdTarget()
{
#ifndef _AFX_NO_OLE_SUPPORT
if (m_xDispatch.m_vtbl != 0)
((COleDispatchImpl*)&m_xDispatch)->Disconnect();
ASSERT(m_dwRef <= 1);//就是这里!!!
#endif
#ifdef _AFXDLL
m_pModuleState = NULL;
#endif
}
MFCbug

解决方案 »

  1.   

    Debug下打开call stack,看函数调用堆栈~
      

  2.   

    按1楼说的,在调用堆栈里找到最后调用你程序里的函数,看是哪条语句出的问题,这种情况应该是在释放资源时出的问题,就是本该释放资源,但这个资源已不存在了.如果是这种情况,你就响应WM_DESTROY这个消息,在这个消息函数里执行销毁过程,因为你点叉才出的问题,因此这种情况可能性很大
      

  3.   

    我已经把自己所有new出来的资源给delete掉了……
      

  4.   

    是啊  相应了 WM_DESTROY  了么?