我对下面的C代码的问题:何时为本地变量分配堆栈空间?
void my_function()
{
int i1;
int j1;
// Do something...
if (check_something())
{
int i2;
int j2;
// Do something else...
}
// Do some more stuff...
}
是否存在时,堆栈空间分配/释放的I2和J2或者它依赖于编译器有关的任何担保?我希望当i2和j2进入作用域时调整堆栈指针,并在超出作用域时将其调整回去,但后来认为一些编译器可能只是“优化”整个事物并解释嵌套作用域中的变量该功能首先输入。
我知道我可以看看我的编译器生成的汇编代码,但想知道实现是否可以留给编译器。
谢谢!
还要考虑变量可以分配给寄存器... – unwind 2009-11-06 15:17:41