Access violation reading location 0x000000XX
对于这样的运行时错误,你可能会抓狂。我今天在编写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
今天遇到的问题是
for(i = m_cUndo.GetSize() - 1; i >= m_nCurUndo; i--)
{
delete m_cUndo[i];
m_cUndo.RemoveAt(i);
} 这是修改bug后添加的,就是将m_cUndo置空,使它里面的数据为空.如果不加,就成了野指针了.
m_cUndo.Add(new CUndoViaExtending(dlg.pExtendedVias, dlg.nExtendedVias, dlg.pAddedNodes, dlg.nAddedNodes));
///以下为消息响应函数
void CViaExtending::OnUndo()
{
m_nCurUndo--;
memmove(m_bLayerFlags, m_cOriginal[m_nCurUndo], m_nMaxLayerIndex + 1);
LVITEM lvItem;
lvItem.mask = LVIF_IMAGE;
lvItem.iSubItem = 0;
for(int i = 0; i <= m_nMaxLayerIndex; i++)
{
lvItem.iItem = i;
lvItem.iImage = m_bLayerFlags[i];
m_List.SetItem(&lvItem);
}
m_cUndo[m_nCurUndo]->UndoObject(m_pView);
if(m_nCurUndo < 1)
m_Undo.EnableWindow(FALSE);
m_Redo.EnableWindow(TRUE);
}
当点击两次Undo按钮时程序Crash了!(具体如何操作就不说了)
原因是当点击第二次按钮时,使用了delete了的m_Undo类. 并且没有将它置空,就又使用了.里面涉及了野指针的内容.
Access violation reading location 0x000000XX相关推荐
- OpenCV特征检测出现Unhandled exception at……Access violation reading location 0x00000000.
OpenCV版本为2.4.12,Visual Studio 开发环境中运行. 在图像特征检测.匹配中出现了运行错误: Unhandled exception at 0x569D1C00 (opencv ...
- Access violation reading location 0xccccccc0运行异常的解决方法
转自:http://blog.csdn.net/michealmeng555/article/details/6452697 编译过运行时出现如下错误 Access violation reading ...
- Unhandled exception at 0x........ in XXXX.exe: 0xC0000005:Access violation reading location 0x......
Unhandled exception at 0x........ in XXXX.exe: 0xC0000005:Access violation reading location 0x...... ...
- C/C++ error/exception throw: access violation reading location 0x....;
[问题背景]问题现象如下图: [问题分析]这类问题,概括的说对基本由于指针未正确使用(申请或者释放过程中产生问题)而导致. [01]像我产生这个错误时,看自己的代码哪里都好的,检查的检查了,异常的处理 ...
- Unhandled exception at 0x00291422 in x.exe: 0xC0000005: Access violation writing location 0x37ACCE08
源码如下: #include<stdio.h> #include<string.h> #include<stdlib.h> //malloc所在库#define M ...
- First-chance exception at 0x000007FE86D99B3C in XXXX.exe: 0xC0000005: Access violation reading locat
First-chance exception at 0x000007FE86D99B3C in XXXX.exe: 0xC0000005: Access violation reading locat ...
- access violation reading 0x0000000000000020
access violation reading 0x0000000000000020 原因: 再次使用之前应该先释放一下内存: av_freep(aviobuffer); //printf(&quo ...
- exception: access violation reading 0xFFFFFFFFFFFFFFFF
exception: access violation reading 0xFFFFFFFFFFFFFFFF 原因:内存释放的时候出了问题,可能是释放过了. av_freep(aviobuffer); ...
- OSError: exception: access violation reading 0x0000000000000001
File "D:\Users\Administrator\Miniconda3\envs\python36\lib\ctypes\__init__.py", line 492, i ...
最新文章
- Spring中的Controller ,Service,Dao是不是线程安全的?
- 各种浏览器的userAgent
- UA MATH571A R语言回归分析实践 多元回归2 医疗费用的决定
- linux内核锁机制学习
- spring boot2.x整合redis
- SQL Server里一些未公开的扩展存储过程
- 外包公司到底值不值去?
- Leetcode之路径总和II
- GoLang 插件化开发
- 网站页面篡改及挂马的应急处置
- 英语3500词(20/20)dream主题(2022.4.30)
- 文献综述是什么,该怎么写?
- java将域名解析为IP地址,获取网卡的配置信息
- 圆周率 java编程_Java编程中实现计算圆周率的方法
- 《瘗旅文》 作者:王阳明(正德四年己巳作)
- 无线视频监控系统设计
- shell中大小写转换
- RAID磁盘阵列的几种模式
- PMP考试自学可以吗? 一分钟让你搞清楚
- Bia布刷题日记2022/2/17
热门文章
- systemd wsl 测试笔记
- hz什么梗_90hz屏幕什么意思
- 青岛理工大学 研究生 吴斌
- 养生之道——》早上刷牙干呕&&慢性烟炎
- dms mysql定义变量_数据管理DMS:自建MySQL数据库 全量SQL诊断功能发布啦!-阿里云开发者社区...
- 健身房小姐姐爆满了,我只用PR做了这一件事!
- kotterKnife+dagger2+otto+okhttp+picasso+retrofit+rxjava示例项目,使用kotlin编写。
- 自学编程的30岁男人,能按应届生那样找工作吗?
- 棕榈油增仓大涨,铁矿石认购上涨,豆粕09-01季节性正套2022.5.27
- wireshark IP地址域名解析