如果我执行以下任一操作(我假设这些操作在本问题中是等效的):
变量
我知道这理论上取决于编译器,但我假设像这样的简单问题在所有主要编译器中都很常见。如果不是这样,有人知道特别是关于
for(int i=0; i<A; i++)
{
//... do stuff
for(int j=0; j<B; j++)
{
//... do stuff
}
//... do stuff
}
for(int i=0; i<A; i++)
{
int j;
//... do stuff
}
变量
j
在每次循环中是否会在堆栈上重新创建(即 SP
是否在每次循环中不断更新),还是编译器聪明到足以知道函数可能同时具有多少个局部变量,然后在函数入口为所有这些变量腾出空间?我知道这理论上取决于编译器,但我假设像这样的简单问题在所有主要编译器中都很常见。如果不是这样,有人知道特别是关于
GCC
和 VC++
编译器吗?