程序员的自我修养 8.8分
读书笔记 栈初始化
超级露

在VC下调试程序的时候,常常看到一些没有初始化的变量或内存区域的值是"烫"。例如下列代码:

int main()

{

char p[12];

}

此代码中的数组p没有初始化,当我们在Debug模式下运行这个程序,在main中设下断点并监视数组p时,就能看见"烫烫烫烫烫"。

之所以会出现"烫"这么一个奇怪的字,就是因为Debug模式中,将所有的分配出来的栈空间的每一个字节都初始化为0xCC,0xCCCC(即两个连续排列的0xCC)的汉字编码就是烫,所以0xCCCC如果被当作文本就是"烫"。

将未初始化数据设置为0xCC的理由是这样可以有助于判断一个变量是否没有初始化。如果一个指针变量的值是0xCCCCCCCC,那么我们就可以基本相信这个指针没有经过初始化。当然这个信息仅供参考,编译器检查未初始化变量的方法并不能以此为证据。有时编译器还会使用0xCDCDCDCD作为未初始化标记,此时我们就会看到汉字"屯屯"。

0
《程序员的自我修养》的全部笔记 280篇
豆瓣
我们的精神角落
免费下载 iOS / Android 版客户端