编译器如何在堆栈上分配内存

How Compiler allocate memory on stack

本文关键字:分配 内存 堆栈 编译器      更新时间:2023-10-16

如果函数中有几个局部变量,比如-

void fun()
{
  int a,b,c,d,e,f,g;
} 

编译器是否为每个变量一个接一个地分配内存?如果是为什么编译器不一次读取所有变量,然后为他们在一枪?

编译器不为它们中的任何一个分配内存。源代码和最终可执行文件之间的区别比这更复杂。不过,简而言之,如果这些变量最终实际存在于执行计算机上(这一点并不确定:批量可以被优化掉。

从这个意义上说,编译器将"一次性为它们分配内存"。但基本上不会。:-)