【发布时间】:2014-03-21 18:10:54
【问题描述】:
假设我在C 中编写此代码。
如果我有一个未初始化的变量number,我不知道它的值是什么。但是...
什么是随机值?我在内存转储中有什么?是不是因为尝试读取地址却没有出来?
我尝试调试我的程序,但我还是个新手,所以我很容易迷路。
另外,如果我添加一个zerowillcome 变量(参见代码2),我的number 值将不再是随机的:它将是0。我不明白为什么会发生这种情况,但我认为这与将顺序变量推入堆栈有关。我对吗?有人可以一步一步地描绘我到底发生了什么吗?
PS:那些其他变量在那里,因为这是其他代码的 sn-p,所以我不知道删除它们是否能够改变应用程序行为:我的注意力被由添加zerowillcome 变量。
代码 1:
int main (int argc, char *argv[])
{
int number, var1, var2, tmp, tmp2;
printf("number: %d", number); // <- insert random number here
return 0;
}
代码 2:
int main (int argc, char *argv[])
{
int number, var1, var2, tmp, tmp2, zerowillcome;
printf("number: %d", number); // <- 0 !!!
return 0;
}
【问题讨论】:
-
您获得的任何结果不仅是未定义的,而且它们被称为未定义,因为它们将来可能会发生变化。知道今天的价值是如何到达那里的,明天它可能不再存在时,这并不是很有成效。
标签: c debugging stack uninitialized-constant