Access violation reading location 0x000000XX

这篇博客介绍了如何处理MFC应用程序中常见的'Access violation reading location'错误。错误通常由于未初始化的指针或NULL指针使用导致。通过设置断点和使用Call Stack,可以定位并解决此类问题。作者分享了一个具体的例子,涉及对m_cUndo对象的不当操作,导致在多次调用Undo函数时发生崩溃。解决方案是确保在删除对象后将其正确置空。
摘要由CSDN通过智能技术生成

 

 对于这样的运行时错误,你可能会抓狂。我今天在编写MFC程序时遇到了这样的错误,解决这个问题花了我一个多小时的时间,最后才定位到错误。

   首先解释一下这种错误,意思是:违反规则访问地址为0x00000038的内存,并且你没有处理这个异常。

   一般来说,这种错误产生的原因是:你使用了没有初始化的指针,或者说你初始化NULL,但它没有被赋予实际的值。例如:View*pView=NULL; pView->Update();此时你便会遇到这种错误。你要想解决这种错误,就要找到它的位置。对于MFC程序,你肯定是因为触发了某个事件,才产生了这种错误。你首先要找到与该事件相关联的函数,然后在此处设置断点。然后你就F10,F10,F10就行了。直到错误重新产生。现在你就找到了错误的大概位置。如果这个位置就是你要找的,你解决它就行了,如果不是,那么它应该就是一个函数了。这是你改变断点到此,然后F11进去,继续就行了。一般来说,这种错误这样很容易就找到了错误的原因,但是今天我遇到了一种情况。错误产生在SendMessage()这个函数在,这就麻烦了,因为SendMessage()是直到消息处理完了,它才结束。这时你就要用到错误产生时,它给你定位的地址了,你将断点直接设到这个位置。然后顺着它往前找,或者你可以利用Call Stack来慢慢寻找。希望你可以解决你自己的问题。

以上内容转自:http://hi.baidu.com/supermain/blog/item/7d8240ee133375dd2e2e210b.html

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值