Chinaunix首页 | 论坛 | 博客
  • 博客访问: 107751
  • 博文数量: 106
  • 博客积分: 2025
  • 博客等级: 大尉
  • 技术积分: 1165
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-06 12:51
文章分类

全部博文(106)

文章存档

2012年(106)

我的朋友

分类: C/C++

2012-05-08 01:38:34

关于错误数据之""

指针:0xCCCCCCCC
VC
DEBUG版会把未初始化的指针自动初始化为0xCCCCCCCC,而不是就让它随机去,那是因为DEBUG版的目的是为了方便我们调试程序的,如果野指针的初值不确定,那么每次调试同一个程序就可能出现不一样的结果,比如这次程序崩掉,下次正常运行,再一次虽然没崩掉,但结果不对……那显然对我们解bug是非常不利的。
DEBUG
版本为了能让程序员更早的发现错误,把堆栈上的数据对初始化成了0xcc,也就是说局部变量如果不初始化,那么DEBUG版本中就会是0xCC

Debug为了调试方便,也就是其Edit And Continue特性,为每个函数都多分配了64个字节。当用户在调试时在代码里增加少量变量的时候,编译器就可以分配那64个字节的空间过去,这样就不用重新编译程序来重新调试。


int
-858993460(十六进制OXCCCCCCCC)(二进制11001100110011001100110011001100
a
、当一个未初始化赋值的时候(至少是vc 下未初始化的内存)默认是0xCCCCCCCC;,他在内存就默认保存为-858993460 即二进制的11001100 11001100 11001100 11001100 十六进制的CCCCCCCC;而汉字 "" 的编码恰好就是1100110011001100:
b
、如果变量的数据类型由于你的运算的溢出了,在内存中系统就自动改为-858993460

unsigned
unsigned long3435973836 OXCCCCCCCC)(11001100110011001100110011001100
short
-13108 0XCCCC)(1100110011001100
char
-52 '?' 其中 -52为(0XCC)(11001100
double,long double
-9.2559631349317831e+061
bool:true

阅读(380) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~