ntdll! 7c92120e()
ntdll! 7c96b0a5()
ntdll! 7c93a2b6()
ntdll! 7c990552()
ntdll! 7c96bafc()
ntdll! 7c93a1ba()
_free_base(void * 0x00cce6c8) line 96
_free_dbg_lk(void * 0x00cce6e8, int 1) line 1116 + 9 bytes
_free_dbg(void * 0x00cce6e8, int 1) line 1001 + 13 bytes
operator delete(void * 0x00cce6e8) line 351 + 11 bytes
CPlex::FreeDataChain() line 45 + 15 bytes
CPtrList::RemoveAll() line 55
CPtrList::FreeNode(CPtrList::CNode * 0x00cce6ec) line 126
CPtrList::RemoveAt(__POSITION * 0x00cce6ec) line 317
CDocManager::~CDocManager() line 987
CDocManager::`scalar deleting destructor'(unsigned int 1) + 15 bytes
CWinApp::~CWinApp() line 294 + 37 bytes
CDETSDIApp::~CDETSDIApp() + 104 bytes
$E482() + 34 bytes
doexit(int 0, int 0, int 0) line 353
exit(int 0) line 279 + 13 bytes
WinMainCRTStartup() line 212
KERNEL32! 7c817077()////////////////////////////////////
7C92120E   int         3
7C92120F   ret
7C921210   mov         edi,edi
7C921212   int         3
7C921213   ret
7C921214   mov         edi,edi
7C921216   mov         eax,dword ptr [esp+4]
7C92121A   int         3
7C92121B   ret         4
7C92121E   mov         eax,fs:[00000018]
7C921224   ret
7C921225   push        edi
7C921226   mov         edi,dword ptr [esp+0Ch]
7C92122A   mov         edx,dword ptr [esp+8]
总是报错到底是怎么回事呢?!

解决方案 »

  1.   

    回溯到自己的代码,看看
    CDocManager::~CDocManager() line 987
      

  2.   

    搜索不到不知道为什么!我这里有用 BoundsChecker 查找内存错误,总会指向这一句:
    m_memory_busy.Lock();
    tmp_memory.RemoveAt(0);
    m_memory_busy.Unlock();
      

  3.   

    CDocManager::~CDocManager()这个析构函数中你是不是做了释放链表的操作了,代码贴出来看看~
      

  4.   

    int CThreadByMyself::Run()
    {
    while(1)
    {
    Sleep(1);
    if (m_Serialport.IsOpen())
    {
    if (m_Serialport.GetReadedBytes()!=0)
    {
    if (m_Serialport.m_ReadCount!=0)
    {
    CString tmp;
    tmp.Format("%d",m_Serialport.m_ReadCount);
    CString TReceive = m_Serialport.tmp_buff;
    TestReceive(TReceive);
    ReadBuf(m_Serialport.tmp_buff,TReceive.GetLength());
    }
    m_Serialport.m_ReadCount=0;
    }
    else if (tmp_memory.GetSize()!=NULL)
    {
    CString TSend = tmp_memory.GetAt(0); Send(TSend.GetBuffer(TSend.GetLength()));
    TestSend(TSend);
    m_memory_busy.Lock();
    tmp_memory.RemoveAt(0);
    m_memory_busy.Unlock();
    }
    }
    }
    return CWinThread::Run();
    }我的线程运行函数!
      

  5.   

    就没有这个析构函数啊!!!
    只有在一个CRIGHTVIEW类里面有个这个列表类的引用CGridCtrl m_pGridCtrl;在然后在这个类的析构函数里面这样写了!
    CRIGHTVIEW::~CRIGHTVIEW()
    {
    if(m_pGridCtrl)
            delete m_pGridCtrl;
    }就这个析构里面写了这个,别的工程里面的析构函数都没写啊!
      

  6.   

    CGridCtrl m_pGridCtrl;
    你这里不是指针了,你有动态分配吗?怎么下面是delete呢?
      

  7.   


    我的Debug 跟release 调试 都是报错user breakpoint called from code at 0X7c92120erelease 下面是 
    ntdll! 7c92120e()
    ntdll! 7c96b0a5()
    ntdll! 7c93a2b6()
    ntdll! 7c990552()
    ntdll! 7c96bafc()
    ntdll! 7c93a1ba()
    DETSDI! 00445c03()
    DETSDI! 00457bcd()
    KERNEL32! 7c817077()我把
    CRIGHTVIEW::~CRIGHTVIEW()
    {
    //if(m_pGridCtrl)
    //  delete m_pGridCtrl;
    }
    一样有问题!我想可能不是这个问题,是不是跟 线程运行函数有关?
      

  8.   

    ntdll! 7c92120e()
    ntdll! 7c96b0a5()
    ntdll! 7c93a2b6()
    ntdll! 7c990552()
    ntdll! 7c96bafc()
    ntdll! 7c93a1ba()
    DETSDI! 00445c03()
    DETSDI! 00457bcd()
    KERNEL32! 7c817077()
    这样是不是指  我程序在  00445c03() 的时候 出错了?
      

  9.   

    我一直 F10  下去 之后
    弹出 
      the thread 0XDEC has Exited with code 0(0x0)
    ntdll! 7c92e514()
    RPCRT4! 77e56caf()
    RPCRT4! 77e56ad1()
    RPCRT4! 77e56c97()
    KERNEL32! 7c80b729()