可能重复:
在C中,大括号是否作为堆栈框架?
int main() { int i=10; { int i=100; printf("%d", i); } }
内部“{”和“}”会创建一个新的堆栈帧吗?
这完全取决于实现,但对于那里的实现,答案是否定的。 两个i
变量通常由同一堆栈帧中的两个单独变量实现,尽管在这种特定情况下,第一个i
可能完全被省略。
只有在调用子例程时才需要创建堆栈帧(在i386上)(即使它仅用于返回地址)。 在您的情况下不会发生这种情况。
只有编译器感到痒。 当然不涉及语言要求。 更具体地说,我无法想到任何编译器会在这里推动框架的冲动,除非为大量本地人优化存储。 编译器完全能够在没有运行时帧的情况下管理名称。
也许。 也许不是。 语言不需要它,因此编译器可以随意做任何事情。
以上就是c/c++开发分享在输入一个语句块时是否会创建一个新的Stack Frame?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/523010.html