这个问题已经在这里有了答案:




已关闭10年。






如何在C和C++中生成垃圾值?编译器是否使用某种随机数生成技术来生成垃圾值?

最佳答案

如果您指的是未初始化变量的值,则不会生成这些值。它们就是该内存位置中发生的任何垃圾。

int *foo = new int;
std::cout << *foo << std::endl;

New返回了指向内存中某个地址的指针。 RAM的那部分一直存在。无法知道之前存储在那里的内容。如果仅是从操作系统请求的,则可能为0(出于安全原因,操作系统会在释放内存块之前先擦除内存块)。如果您的程序以前使用过它,谁知道。

实际上,使用未初始化变量的结果是不确定的。您可能会得到一个无法预测的数字,程序可能崩溃,甚至更糟。

即使您知道在您的平台上运行上述代码是安全的,您也不应该依赖于提供随机值。它会随机出现,但实际上可能比您想要的要可预测和可控制的多。另外,分布将为,而接近统一。

10-05 20:48
查看更多