[英]Reserving space for variables and activation record
仅声明变量是否在程序存储器中为其保留了空间? 如果没有,请考虑以下代码段:
void foo(int bar, int baz){
int a;
char b[4];
}
这段代码一旦输入foo,便会在堆栈中分配一个空间并创建一个激活记录,如下所示:
因此,即使仅声明和未定义,该激活记录如何为a和b分配空间?
a
和b
已定义但未使用。 由于程序无法确定它们是否已创建,因此编译器可以随意忽略它们。
在某些优化条件下,编译器可能不一定会选择放弃未初始化变量占用的空间,但是始终建议从代码中删除从未使用过的变量。
在一般情况下,假设使用32位系统,则您的编译器将在堆栈中撤出最少4 + 4字节的空间,以保存将来可能使用的变量数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.