http://blog.163.com/xu_jin_rong/blog/static/1491966220089412921605/
用固定的地址是可以访问指针所指向的数据的。但是在一般情况下,Windows可能会报非法操作。
VC的DEBUG版会把未初始化的指针自动初始化为0xCCCCCCCC,而不是就让它随机去,那是因为DEBUG版的目的是为了方便我们调试程序的,如果野指针的初值不确定,那么每次调试同一个程序就可能出现不一样的结果,比如这次程序崩掉,下次正常运行,再一次虽然没崩掉,但结果不对……那显然对我们解bug是非常不利的。
DEBUG版本为了能让程序员更早的发现错误,把堆栈上的数据对初始化成了0xcc,也就是说局部变量如果不初始化,那么DEBUG版本中就会是0xCC。
Debug为了调试方便,也就是其Edit And Continue特性,为每个函数都多分配了64个字节。当用户在调试时在代码里增加少量变量的时候,编译器就可以分配那64个字节的空间过去,这样就不用重新编译程序来重新调试。
另外一个说法:
http://blog.youkuaiyun.com/wuhuiran/archive/2008/07/11/2639800.aspx
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()