未初始化变量的值从何而来?

Where do values from unintialized variables come from?

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

int i;

并且你使用这个变量,你会得到未定义的行为,因为我还没有初始化。但是我持有一个值,一个"garbage"值,这个值是从哪里来的呢?它来自内存中的随机位置吗?

它是之前在 &i 内存中的任何内容。

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

也就是说,在大多数实现中,大多数时候 int i; 会在堆栈上保留 sizeof(int) 字节(通常在 某处 主内存),因此 i 的值将是此时恰好在堆栈上的任何值。

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