c - 变量的内存分配

标签 c memory allocation

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

最佳答案

这取决于您声明的地点和方式。

如果它是全局变量或在函数内声明的静态变量,则链接器决定将其放置在何处(通常分别位于 .data 或 .bss 部分,分别用于初始化或未初始化的数据)。您的可执行加载程序(或者,如果您没有操作系统,则为您的引导加载程序)将决定它最终在 RAM 中的位置。

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

关于c - 变量的内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29397491/

相关文章:

java - 分配延迟似乎很高,为什么?

C 错误,需要帮助

ubuntu - MemFree 和 MemAvailable 之间的区别

php - 是否值得使用 require_once() 来节省内存?

PHP - 执行长脚本时可能遇到的障碍

C++动态分配二维数组

c++ - BN_CTX_free() 与 BN_CTX_end() EXC_BAD_ACCESS 异常

python - 如何向 distutils 添加 C 编译器选项

c - getline 启动

使用 libssh 复制文件