文章类型: VC&C++
关键词: VC,oxc0000005,读取,位置,oxddddddddd,0x0000000,发生,访问,冲突,异常值
内容摘要: VC中出现oxc0000005 读取位置oxddddddddd 时发生访问冲突

VC中,出现oxc0000005 读取位置oxddddddddd 时发生访问冲突,0xcccccccc、0xcdcdcdcd和 0xfeeefeee 异常值说明

2018/7/27 10:58:38    来源:apple    阅读:

0xC0000005一般是NULL指针造成的(如下图)。在Debug状态下,出现异常的时候,选择“Break“,然后看程序停在那一行,再看看是否是这一行使用了NULL指针。


image.png

初步怀疑是:
mgCenterDib *pDib = pDoc->GetPDib();

这个语句执行后,pDib得到了NULL。


VC中关于 0xcccccccc、0xcdcdcdcd和 0xfeeefeee 异常值说明

VC在调试时,可能会报“写入位置0xcccccccc 时发生访问冲突”,或者“写入位置0xcdcdcdcd 时发生访问冲突”,这些问题可能是由于使用了未初始化的指针引起的。

        在 Debug 模式下,VC 会把未初始化的栈内存上的指针全部填成 0xcccccccc ,当字符串看就是 “烫烫烫烫……”,会把未初始化的堆内存上的指针全部填成 0xcdcdcdcd,当字符串看就是 “屯屯屯屯……”。那么调试器为什么要这么做呢?

        VC的DEBUG版会把未初始化的指针自动初始化为0xcccccccc或0xcdcdcdcd,而不是就让取随机值,那是为了方便我们调试程序,如果野指针的初值不确定,那么每次调试同一个程序就可能出现不一样的结果,比如这次程序崩掉,下次却能正常运行,这样显然对我们解bug是非常不利的,所以自动初始化的目的是为了让我们一眼就能确定我们使用了未初始化的野指针了。

        常见默认值说明:

        0xcdcdcdcd - Created but not initialised
        0xdddddddd - Deleted
        0xfeeefeee - Freed memory set by NT's heap manager
        0xcccccccc - Uninitialized locals in VC6 when you compile w/ /GZ
        0xabababab - Memory following a block allocated by LocalAlloc()


总结:当出现地址的读取位置发生访问冲突时,一般都是由于读取内存异常造成的,其原因大多是因为使用了错误的指针对象(基本上值为NULL)。

↑ 上一篇文章:vc中bool与BOOL的区别 关键词:vc,bool,BOOL,区别,微软 发布日期:2018/7/27 10:53:17
↓ 下一篇文章:VC窗体关闭时,销毁函数调用顺序 关键词:VC,窗体,关闭,销毁,函数,调用,顺序,delete,.. 发布日期:2018/7/27 15:00:43
相关文章:
VC对话框大小和位置设置 关键词:VC,对话框,大小,位置,设置 发布日期:2018-11-28 11:26
vc++ mfc下访问http的类,接口非常简单,很好用 关键词:vc++,mfc下访问http的类,接口非常简单,很好用 发布日期:2016-08-23 14:03
VC简单调用ADO访问数据库 关键词:VC简单调用ADO访问数据库 发布日期:2016-08-22 13:54
相关目录:.NETVC&C++
我要评论
正在加载评论信息......