c - 本地初始值存储在?

标签 c segments

#include <stdio.h>  
int main()
{
  int i = 10;
  return 0;
}

在上面的程序中,值 10 到底存储在哪里?

我知道变量 i 存储在堆栈中。堆栈在运行时填充。来自“确切”10 的来源。

最佳答案

10 是一个常量,因此编译器将在程序的可执行部分中直接使用数字 10 作为 CPU 指令的一部分。

这是在我的系统上使用 gcc 生成的程序集:

movl    $10, -4(%rbp)

(4 是因为 int 是 4 个字节长)

请注意,所有这些都是实现的一部分,但以上内容是实际发生的。语言本身并未指定这些细节。

关于c - 本地初始值存储在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15638122/

相关文章:

assembly - 如何为 x86 中的程序设置一个新的堆栈段以与我的内核分开?

assembly - 通过汇编将数据存储在段中

http-live-streaming - #EXTINF - 苹果 hls 播放列表中的字段具有小数点放置的持续时间 - 由 mediafilesegmenter 生成

c++ - 在 C++ 和 C 之间传递数据

c - 如何将指针指向的 textf 的内容复制到 char 数组(即指针 -> char 数组)

c - 在 C 2.0 统计错误中读取目录

c - 尝试将字符串放入嵌套结构时出错

c - 在两列中查找匹配项并替换

google-analytics - 你能解释一下段中的 "Advanced-->Conditions-->Filter"和摘要图表吗?