|
只声明变量会在程序内存中为其保留空间吗?如果没有,那么请考虑以下代码片段:
void foo(int bar, int baz){
int a;
char b[4];
}
此代码一进入 foo 就会在堆栈中分配一个空间并创建如下激活记录:
| 巴兹 |
| 酒吧 |
|
保存的电脑 |
| 一 |
| 乙 |
那么,即使 a 和 b 只是声明而未定义,此激活记录如何为它们分配空间?
定义了
a
和b
,但未使用。由于程序无法判断它们是否被创建,因此编译器可以自由地忽略它们。
不一定,在某些优化条件下,编译器可能会选择丢弃未初始化变量占用的空间。但是,始终建议从代码中删除从未使用的变量。
在一般情况下,假设 32 位系统,您的编译器将在堆栈中腾出至少 4+4 字节的空间,以保存将来可能使用的变量数据。