在输入语句块时是否会创建一个新的Stack Frame?
可能重复:
在C中,大括号是作为一个堆栈框架吗?
int main()
{
int i=10;
{
int i=100;
printf("%d", i);
}
}
内部“{”和“}”是否会创建一个新的堆栈框架?
这完全依赖于实现,但对于那里的实现,答案是否定的。 这两个i
变量通常由同一栈帧中的两个独立变量实现,但在这种特殊情况下,第一个i
可能会被完全省略。
只有当你调用一个子程序时(即使它仅用于返回地址),才需要创建堆栈框架(在i386上)。 这不会发生在你的情况。
只有当编译器感到痒时。 当然不涉及语言要求。 更具体一些,我想不出有任何理由认为任何编译器都会在这里推动一个框架,除非是为大量本地人优化存储。 编译器完全能够在没有运行时框架的情况下管理名称。
也许。 也许不是。 语言不需要它,所以编译器可以自由地做任何事情。
链接地址: http://www.djcxy.com/p/84315.html上一篇: Will a new Stack Frame be created on entering a block of statements?