Bis*_*Roy -4 c variables initialization undefined-behavior
我的意思是问它是否遵循一些特定的算法,实际上不是垃圾.
换句话说,"垃圾"值究竟是如何存在的?考虑不调用UB,如果读取垃圾值,该值的来源是什么?
该标准没有提到术语"垃圾",它提到了"不确定/不确定的价值".价值可以是任何东西.注意
从用户的角度来看,如果我们无法修复某个值(对于任何变量),那么"期望"在任何时候都不匹配,并且我们得到的值(如果)没有任何用处,因此称为他们作为"垃圾"很常见.
最相关和最常见的观察/实现是,对于未初始化的自动变量,仅分配存储,不触摸该存储的内容.所以,它可能仍然包含最后存储的值.现在,在当前情况下,该值可能是其他(上一个)场景中的有效值,没有任何意义,因此在当前场景中它是"垃圾".
TL; DR未生成 "垃圾"值,大多数情况下,它只是该内存位置中的最后一个存储值.
注意:
相关C11引文,第6.7.9章
如果未显式初始化具有自动存储持续时间的对象,则其值不确定.[....]
附加阅读:
这与主题密切相关,因此将其添加为脚注.
在这种情况下,存在一个变量,它具有不确定的价值和
然后,尝试读取该值实际上会导致未定义的行为.意识到.