2015-04-01 119 views
-1

假设我没有一个操作系统,并且我编写了一个c程序并编译了一个程序以便在没有操作系统的计算机上运行。我的程序有一行int a = 0;我的问题是变量a的存储位置以及程序如何确定变量的存储位置?变量的内存分配

+0

可能重复的[我可以执行任何C编没有任何OS平台?](http://stackoverflow.com/questions/1722687/can-i-execute-any-c-made-prog-without-any -os-platform) – 2015-04-01 18:12:52

+0

静态和自动变量的内存分配是编译器和链接器的函数,而不是操作系统。至于存储变量的位置,取决于声明的方式和位置。 – 2015-04-01 18:43:00

回答

0

这取决于您在哪里以及如何声明它。

如果它是一个全局变量或者在函数内部声明的静态变量,那么链接器将决定将它放在哪里(通常在.data或.bss节中,分别用于初始化或未初始化的数据)。你的可执行程序加载器(或者,如果你没有一个操作系统,你的启动加载器)会决定它在RAM中的最终位置。

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