C/C++中的垃圾值

nis*_*ant 1 c c++ programming-languages

可能重复:
未初始化的变量如何获得垃圾值?

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

der*_*ert 7

如果您指未初始化变量的值,则不会生成这些值.它们只是在内存位置发生的垃圾.

int *foo = new int;
std::cout << *foo << std::endl;
Run Code Online (Sandbox Code Playgroud)

New返回指向内存中某个地址的指针.RAM的这一点一直存在; 之前没有办法知道那里存储了什么.如果它只是从操作系统请求,它可能是0(操作系统将在出于安全原因将它们输出之前擦除存储器块).如果它以前被您的程序使用过,谁知道.

实际上,使用未初始化变量的结果是不确定的.您可能会收到一个不可预测的数字,您的程序可能会崩溃,或者更糟.

即使您知道在您的平台上运行上述内容也是安全的,您也不应该依赖于给出随机值.它看起来是随机的,但实际上可能比你想要的更具可预测性和可控性.此外,分布将无法统一.