变量的内存分配

Memory allocation of variable

Suppose 我没有 os,我在没有 os 的计算机上写了一个 c 并编译了一个程序到 运行。我的程序有一行 int a = 0;我的问题是变量a存储在哪里,程序如何确定存储变量的位置?

这取决于您声明的位置和方式。

如果它是一个全局变量,或者是在函数内部声明的静态变量,链接器会决定将它放在哪里(通常在 .data 或 .bss 部分,分别用于初始化或未初始化的数据)。您的可执行加载程序(或者,如果您的下面没有 OS,您的引导加载程序)将决定它最终在 RAM 中的确切位置。

如果它是局部变量,编译器会将其放在您的调用堆栈或寄存器中。