【发布时间】:2013-11-10 14:26:53
【问题描述】:
如果我有一个 c 函数
int foo(int input)
{
int x = 5;
if( input == 0 ){
int y = 6;
} else {
int z = 7;
}
}
我知道当我们进入函数时堆栈指针会被调整,这为int x 语句腾出空间。而且我知道y 和z 只存在于它们各自块的范围内。但是何时以及如何为他们分配空间?
【问题讨论】:
-
AFAIK 编译器可以选择自己的分配策略,只要它确保变量仅在逻辑范围内应该在范围内。不要认为规范规定了具体的分配。
-
那些变量?到优化器完成时,永远不会。
-
我知道它们会被优化掉。为了简洁起见,我没有输入“......并做某事......”我会在以后的问题中提出。