Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
只声明一个变量是否会在程序内存中为它保留一个空间?如果没有,请考虑以下代码段:
void foo(int bar, int baz){ int a; char b[4]; }
此代码一进入 foo 就会在堆栈中分配一个空间并创建如下激活记录:
那么,这个激活记录如何为 a 和 b 分配空间,即使它们只是声明而没有定义呢?
a并且b已定义但未使用。由于程序无法判断它们是否被创建,编译器可以自由地忽略它们。
a
b
不一定,在某些优化条件下编译器可能会选择丢弃未初始化变量占用的空间。但是始终建议从代码中删除从未使用过的变量。
在一般情况下,假设 32 位系统,您的编译器将在堆栈中清除至少 4+4 字节的空间,以保存将来可能使用的变量数据。