有人提到了这个问题,的确有点诧异,自己以前从未考虑这个问题,毕竟函数调用完成后,栈空间就被释放了,局部变量如果不是很大的数组或结构体其实不影响代码性能。
直接上例子吧,例1:
#include "stdio.h"
int main(void)
{
int int_a;
char char_b;
char char_c;
double double_d;
int int_e;
printf("&int_a : %p\n",&int_a);
printf("&char_b : %p\n",&char_b);
printf("&char_c: %p\n",&char_c);
printf("&double_d : %p\n",&double_d);
printf("&int_e : %p\n",&int_e);
}
gcc -S stack-1.c -o stack-1.s,编译成汇编文件,查看汇编文件:
从上图中可知分配栈空间48个字节。
接着 gcc stack-1.s -o stack1-bin,生成二进制可执行文件,打印如下: