现在的位置: 首页 > 综合 > 正文

令人蛋疼的错误提示 0xcdcdcdcd ,0xdddddddd ,0xfeeefeee ,0xcccccccc ,0xabababab

2013年12月06日 ⁄ 综合 ⁄ 共 1273字 ⁄ 字号 评论关闭
原文地址:http://www.cnblogs.com/pcchinadreamfly/archive/2012/04/26/2471317.html

参考地址:http://blog.csdn.net/wuhuiran/article/details/2639800
上面两者谁转载了谁(再或者源头在别处)已经分不清了,都写上吧!

在写C++程序的时候,老实0xcdcdcdcd ,0xdddddddd ,0xfeeefeee ,0xcccccccc ,0xabababab这种提示,不知何解,google之,错误是这样产生。

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()


VC++在Debug编译方式编译的程序中,会跟踪用new分配的内存。新分配的内存会用0xcd(助记词为Cleared Data)填充,防止未初始化;当它被delete后,又会被0xdd(Dead
  Data)填充,防止再次被使用。这样有利于调试内存错误。之所以选这样的填充模式,是因为:

1.大数,若被当成指针就会越界 

2.奇数,指针通常指向偶数地址  

3.非0,这样不会和   NULL   混淆。 


在Release版中不会有这些字节填充。

参考地址:http://blog.csdn.net/wuhuiran/article/details/2639800
上面两者谁转载了谁(再或者源头在别处)已经分不清了,都写上吧!

在写C++程序的时候,老实0xcdcdcdcd ,0xdddddddd ,0xfeeefeee ,0xcccccccc ,0xabababab这种提示,不知何解,google之,错误是这样产生。

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()


VC++在Debug编译方式编译的程序中,会跟踪用new分配的内存。新分配的内存会用0xcd(助记词为Cleared Data)填充,防止未初始化;当它被delete后,又会被0xdd(Dead
  Data)填充,防止再次被使用。这样有利于调试内存错误。之所以选这样的填充模式,是因为:

1.大数,若被当成指针就会越界 

2.奇数,指针通常指向偶数地址  

3.非0,这样不会和   NULL   混淆。 


在Release版中不会有这些字节填充。

抱歉!评论已关闭.