来自非初始化变量的值从何而来

Where do values from unintialized variables come from?

本文关键字:变量 初始化      更新时间:2023-10-16

当你声明一个局部变量时,我喜欢这样:

int i;

你使用这个变量,你会得到未定义的行为,因为我还没有初始化。但我手里拿着一个价值,一个"垃圾"价值,这个价值从何而来? 是来自记忆中的随机位置吗?

你不知道,你说不出来。未定义的行为意味着任何事情都可能发生。

也就是说,在实践中,在大多数

实现和大多数情况下,int i;将在堆栈上保留 sizeof(int) 字节(通常在主内存中的某个位置),因此 i 的值将是此时堆栈上碰巧出现的任何内容。

但不要依赖它,请记住这并不总是正确的。

它之前在 &i 的内存中。