This question already has answers here:
When and why will an OS initialise memory to 0xCD, 0xDD, etc. on malloc/free/new/delete?
(9个答案)
4年前关闭。
当我在完全不同的计算机(从Windows 7到在Mac上的VM上运行的Windows 10)上运行带有未初始化变量的完全不同的程序时,它也会输出相同的值-858993460。为什么这样做呢?从天文学角度来看,-858993460随机出现在不同计算机上每个未初始化的内存中的可能性很小。
(9个答案)
4年前关闭。
cout
会为未初始化的变量显示值-858993460(大概是因为内存中有垃圾),但是无论程序中有多少个变量或变量在哪里,它都会为程序中的每个未初始化变量输出-858993460。程序之间的关系。当我在完全不同的计算机(从Windows 7到在Mac上的VM上运行的Windows 10)上运行带有未初始化变量的完全不同的程序时,它也会输出相同的值-858993460。为什么这样做呢?从天文学角度来看,-858993460随机出现在不同计算机上每个未初始化的内存中的可能性很小。
最佳答案
不能保证读取未初始化的变量会返回一个随机值,甚至不会返回该位置先前存在的值。
-858993460是0xcccccccc
。这是MSVC在调试版本中用于填充未初始化值的位模式。这有助于您识别未初始化变量的情况。
关于c++ - -858993460正在输出未初始化的变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32485095/
10-10 23:04