要么是出现如题那个对话框,要么就更干脆:
0x0000x8dxx指令引用的内存发生异常,该内存不能为read,单击“确定”终止程序
单击“取消”调试程序。
   书上说是ASSERT宏控制这个问题。这一系列的问题到底要怎么才能解决啊??
我又不会用VC的调试程序!!
   斑竹和高手们,帮帮我吧,我真的想死了。

解决方案 »

  1.   

    编一个用向导生成的程序也如此吗?
    否则可能是中了病毒,或许硬件故障:内存超了频,CPU过热。
      

  2.   

    不是了,内存一根128的,也不可能是病毒了,我没联网。相信还是我自己的技术原因,我搞VC不久。我只想要哪位兄台能把调试过程说清楚一点。比如:段点怎么设,怎么移。不是单单的F9、F10什么的。其实这个问题困扰我好久了,以前做VC数据库编程也是这样的。谢谢。
      

  3.   

    这是我以前出的问题:
      我做一个学院资产管理系统,当我向数据表添加一条记录时总是弹出一个
    提示错误的消息框!提示:“无效的字符值或规格在列号7(单位)”,我的这个数据表中有如下字段:“ID”“品名”“建卡日期”“部门”“编号”“数量”
    “单位”“型号”“单价”“合计”“备注”。
      还有一个就干脆出现一个可怕的问题。弹出一个错误框,提示:
    “05x07000000指令引用错误,该内存不能为read,单击“确定”终止程序的运行,
    单击“取消”调试程序。”请问,应该怎么解决?其实,这个问题很普遍,建议斑竹采取一些措施或组织一些讨论。感激不尽!!!
      

  4.   

    我的解决方案:1 选择“取消”,或者“重试”
    2 进入调试后,按alt+7,进入call stack
    3 里面有你用到的函数名和参数,从上到下,最后运行的在上面,
    4 检查函数里的参数是否有空值。
      

  5.   

    绝对是你的指针使用的问题,还是学着使用debug吧
      

  6.   

    呵呵, 楼主说的是“我编的程序” ,又不是机器本生的问题,跟内存条无关。
    0x0000x8dxx应该是访问内存越界,建议检查一下到底是那里的指针出了问题。
      

  7.   

    你填入的值是什么?
    “无效的字符值或规格在列号7(单位)”:是指你需要填入的值要加括号,例如(学校),还有,括号要用英文的,你注意了unicode的问题了吗?
      

  8.   

    ffantasyYD(风之子)方法就是宏观到微观的方法,先大后小,我也是如此调试的,相信大部分人也如此的。
      

  9.   

    我调试了一下,是针对“终止”“重试”“忽略”那个消息框的。
    我用alt+4打开Variables对话框调试,在CBase::OninitDialog()中出现一个绿色的三角形标记,不知它是什么意思。
      在Variables的Auto标签下出现一个树形标记this 在value中标记出
    内存为:0x0012f818,并且0x0012f818显示为红色。
      在Variables的Local标签下出现this 0x0012f818     Error:cannot display value这是什么意思,在线等待,迫切想知道。
      

  10.   

    很可能是内存泄露的问题,跟一些指针有关。你可以用单步调试,我就常用最笨的那一种,就是Run to Cursor 然后再单步执行,看问题具体出在哪个地方
      

  11.   

    绿色的三角形标记:是当前你选中的函数“跳出”的位置,可能有点偏差,差一两行,你可以用alt+7,看到函数运行的记录,从下往上看。
    你用alt+4应该查不到什么了,因为可能那段已经运行过去了,变量自然没值了。
      

  12.   

    我调了一下了,因为我估计是在CBase::OnInitDialog()中出了错,所以我把断点设在
    CBase::OnInitDialog()处,当我用step over命令执行的时候,黄色的小箭头指到这个函数
    里的一句m_Tree.SetFont(&font,TRUE);
        请问这意思是不是这一句出了错了??
        
      
      在线等待,谢谢。
      

  13.   

    总是出现“终止”“忽略”“取消”的那个对话框
    看一下给出的出错信息所在的文件和行数。
    应该是一个断言。ASSERT()
    然后你可以找一找程序中哪个地方能够引起这个错误。
      

  14.   

    接上面:当我再次执行的时候又出现如下代码:
    _AFXWIN_INLINE void CWnd::SetFont(CFont* pFont,BOOL bRedraw)
     { ASSERT(::IsWindow(m_hwd)); ::SendMessage(m_hWnd,WM_SETFONT,
        (WPARAM)pFont->GetSafeHandle(),bRedRaw);}请问这里是什么地方?这里有许多的ASSERT宏诊断。
    还有,断点到底是怎么执行的呢?用alt+4打开Variables对话框里的东西也看不懂,他里面
    是树结构的。怎么看呢?
                                  在线!!!!!!!!!对了:留下QQ,谢谢。
      

  15.   

    建议在你觉得会发生错误的地方设置断点 然后单步调试    
    用 F10  一句句的调试  
    实在不清楚哪有错误的话  多设置几个我出现这些错误的时候一般是 使用delete删除new操作创建对象时 发生的
      

  16.   

    我又调试了一下,好像有点眉目了:
    当我调试到为树控件设置文本颜色的时候出现以下情况:
    用alt+4打开Variables对话框调试显示出
                 Name           vlaue
                             m_hwnd          0x00000000
                             this           0x0012f8f8{CTreeCtrl
                                             hwnd=0x00000000}是不是错在这里?我想是的,有三个问题:1.这是什么错误呢,句柄,内存,还是指针?
                         2.怎么修改呢?
               3.内存错误一般出现两个对话框:“确定”“取消”和“终止”“忽略”“取消”对话框,是不是前一个比后一个错误严重。       迫切想知道,在线等待。
      

  17.   

    m_hwnd          0x00000000
    树控件的窗口没有创建。
    { ASSERT(::IsWindow(m_hwd)); ::SendMessage(m_hWnd,WM_SETFONT,
        (WPARAM)pFont->GetSafeHandle(),bRedRaw);}
    因此你想树控件发消息就引起错误。
    调试中,如果发现m_hwnd为0x00000000就是对应的窗口没有创建。窗口与窗口对象不同。窗口对象是C++对象,窗口是Windows结构,Windows通过句柄m_hwnd把窗口对象与窗口联系起来。估计你初始化时没有创建窗口或者没有用Attach(m_hWnd);
      

  18.   

    m_hwnd          0x00000000
    this           0x0012f8f8{CTreeCtrl
                    hwnd=0x00000000}
    窗口句柄有问题,是不是窗口没有成功建立,就使用其指针了
      

  19.   

    我用向导生成的程序也会出现这种问题。
    说是assert错误.
      

  20.   

    to   jyq686 (四空)  
    我已给你发短消息了,请查看
      

  21.   

    你有没有处理得异常。try{}catch{}