现在在做的一个程序,在程序关闭的过程中,在执行完ExitInstance()中的
return CWinApp::ExitInstance()之后,系统会提示出错,错误信息为:
Debug Assertion Failed!
Program : D:\.........\***.exe
File:afx.inl
Line:122
然后只能选择终止,重试和忽略
选择终止,程序跳出,选择忽略,会再次出现这个错误,再次选择忽略,会提示
"应用程序错误":"0x77e7c247"指令引用的"0xfffffff4"内存.该内存不能为"written"
请问是怎么回事儿啊?或者,可能是哪方面出了问题?困扰了好多天了,实在找不到原因,各位老大帮忙看看。

解决方案 »

  1.   

    一般是内存指针已经为NULL,你还在对之进行操作的缘故,你可以跟踪一下,看到底是操作什么指针出的问题
      

  2.   

    我在调试的过程中,最后跟踪到这里,...\VC98\CRT\SRC\CRTODAT.C,ln343 
    if (__onexitbegin) {
                    _PVFV * pfend = __onexitend;                while ( --pfend >= __onexitbegin )
                    /*
                     * if current table entry is non-NULL,
                     * call thru it.
                     */
                    if ( *pfend != NULL )
                        (**pfend)();
                }
    pfend的值不断的减,然后执行(**pfend)(),但是在pfend还没有到__onexitbegin时出错,出错提示中的错误所在位置是如下语句:(文件是...\VC98\mfc\include\afx.inl)
    _AFX_INLINE CStringData* CString::GetData() const
    { ASSERT(m_pchData != NULL); return ((CStringData*)m_pchData)-1; }