Bos*_*ohn 4 c c++ stack scope
如果我有交流功能
int foo(int input) { int x = 5; if( input == 0 ){ int y = 6; } else { int z = 7; } }
我知道当我们进入函数时会调整堆栈指针,这会为int x语句腾出空间.而且我知道y并且z只存在于各自块的范围内.但是他们何时以及如何分配空间?
int x
y
z
Mik*_*our 6
这取决于编译器,只要空间至少持续变量的生命周期.
通常,函数中所有自动变量的空间在函数开始时在堆栈上分配,并在函数返回时释放.如果某些变量不需要地址,则可以将它们放在寄存器中.您的变量可能根本不存在,因为它们从未被使用过.
更新:如评论中所述,C(但尚未C++)允许动态大小的本地数组.显然,在知道尺寸之前,不能分配这些空间.
归档时间:
12 年 前
查看次数:
1091 次
最近记录: