做了个vc++6.0下的MFC程序。应用了Lost Control控件,利用:m_Card.InsertColumn(0,"数据",LVCFMT_LEFT,800);加了标题。再用:this->m_Card.InsertItem(0,"");this->m_Card.SetItemText(0,0,strOut);加入行及显示“strOut”中的数据。
编译通过,运行报错:应用程序发生异常 unknomn software exception(0x80000003),位置为0x7c92120e。调试出断言:user breakpoint called from cede at 0x7c92120  不能排除错误,求教!

解决方案 »

  1.   

    你build->clean,然后重编译下,还有前面为啥加this->?
      

  2.   

    是不是 strOut 数据出问题了
      

  3.   

    选了REPORT模式了,在前面调试时说this指针没发现,所以用了this,单步调试时,7c92120e int 3,在7c921210时,弹出对话框:please enter the path for DBGRPT.C.不动了。
      

  4.   

    call stack时,“_CrtDbgReport(int 2, const char * 0x005d34c8 THIS_FILE, int 304, const char * 0x00000000, const char * 0x00000000) line 353”就是这句要求“DBGRPT.C”的
      

  5.   

    Debug下call stack看看函数调用堆栈
      

  6.   

    在栈回朔里找代码 “m_Card.InsertColumn”所在的函数,或者熟悉的函数名,进去看看
    光凭这句_CrtDbgReport看不出来问题
      

  7.   


    应该是 strOut 数据有问题  可能没赋值
      

  8.   

    在“m_Card.InsertColumn()”时,调用顺序为:“BOOL AFXAPI AfxAssertFailedLine(LPCSTR lpszFileName, int nLine)BOOL bQuit = PeekMessage(&msg, NULL, WM_QUIT, WM_QUIT, PM_REMOVE);BOOL bResult = _CrtDbgReport(_CRT_ASSERT, lpszFileName, nLine, NULL, NULL); if (bQuit)
    PostQuitMessage(msg.wParam);
    return bResult;
    #else
    TCHAR szMessage[_MAX_PATH*2];”
    在“bool bResult=.....”这句出提示:要“DBGRPT.C”。
    帮分析分析
      

  9.   

    经过三天的艰苦查错,总算把问题找到了。是在变量申请时一个 unsigned char类型变量多打了个*号,变为了unsigned char*了。真是神码变浮云了!搞C++太累人了,数据类型一大堆,转过来转过去,让人直冒小星星,看资料到后来只能看C的基本部分了。。苦啊!
     谢谢大家了!不过也怪,List Control报错的方式也太妖孽了点,O(∩_∩)O哈!给大家提个醒。