#include<stdio.h>
main()
{
int a;
printf("%d",a);
}
为什么输出-858993460呢?我知道当一个未初始化赋值的时候,他在内存就默认保存为-858993460;我只是想知道它的内部机制?为什么就是这个数?这个数在内存有什么特别的含义?
用VC DEBUG编译的就是这个数
-858993460对应HEX为0xCCCCCCCC
0xCC在X86指令集中为int 3
DEBUG这个机制是为了程序出现内存越界时调试器可以捕捉断点这个异常
而在RELEASE下默认直接是内存清零,也就是用VC RELEASE编译以后显示的结果为0
main()
{
int a;
printf("%d",a);
}
为什么输出-858993460呢?我知道当一个未初始化赋值的时候,他在内存就默认保存为-858993460;我只是想知道它的内部机制?为什么就是这个数?这个数在内存有什么特别的含义?
用VC DEBUG编译的就是这个数
-858993460对应HEX为0xCCCCCCCC
0xCC在X86指令集中为int 3
DEBUG这个机制是为了程序出现内存越界时调试器可以捕捉断点这个异常
而在RELEASE下默认直接是内存清零,也就是用VC RELEASE编译以后显示的结果为0
本文探讨了在C语言中未初始化的整型变量为何会得到特定的默认值-858993460(十六进制0xCCCCCCCC)。通过分析,解释了这一现象背后的内存初始化机制及调试器如何利用此特性来检测内存越界。
2万+

被折叠的 条评论
为什么被折叠?



