2015-01-10 55 views
1

当你声明一个局部变量,我喜欢这样:来自非变量变量的值来自哪里?

int i; 

而且你使用这个变量,你会得到不确定的行为,因为我还没有初始化。但我拥有一个“垃圾”价值,这个价值从何而来?它来自内存中的随机位置吗?

+3

变量通常在内存中有一个位置,在这种情况下,它的值将是该内存位置发生的任何事情。 – juanchopanza

回答

7

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

这就是说,在大多数实施方式中实践和大部分时间int i;会预留在堆栈上sizeof(int)字节(其通常是某处在主存储器中),所以i值将是任何恰好是在此时叠加。

但是不要依赖它,并且记住这并非总是如此。

2

它的任何内存在&我以前。