-1

只声明一个变量是否会在程序内存中为它保留一个空间?如果没有,请考虑以下代码段:

void foo(int bar, int baz){
int a;
char b[4];
}

此代码一进入 foo 就会在堆栈中分配一个空间并创建如下激活记录:


| 巴兹 |


| 酒吧 |


| 保存的电脑 |


| 一个 |


| 乙 |

那么,这个激活记录如何为 a 和 b 分配空间,即使它们只是声明而没有定义呢?

4

2 回答 2

2

a并且b已定义但未使用。由于程序无法判断它们是否被创建,编译器可以自由地忽略它们。

于 2012-10-06T19:12:23.687 回答
1

不一定,在某些优化条件下编译器可能会选择丢弃未初始化变量占用的空间。但是始终建议从代码中删除从未使用过的变量。

在一般情况下,假设 32 位系统,您的编译器将在堆栈中清除至少 4+4 字节的空间,以保存将来可能使用的变量数据。

于 2012-10-06T18:59:53.070 回答