【发布时间】:2013-02-07 17:51:59
【问题描述】:
我昨天突然怀疑。我已经用 C 编程很长时间了。我的问题是这样的:
假设有一个变量
static uint32_t count = 0;
这个变量应该存储在数据段中。为了这个例子,我们假设数据段在进程的4GB虚拟内存空间中的偏移量0x08000000开始。
我知道在偏移量0x08000000 之后的某处,为变量“count”保留了 4 个字节,值为 0。
我的问题是内存中的这个 4 字节值如何与名称“count”和类型“uint32_t”相关联(或者它是 4 字节长而不是 6 字节长的事实。)
从下面的答案看来,映射信息存储在"symbol table"
这似乎表明它必须是内存中最终可执行文件的一部分。如果是这样,符号表存储在哪里?它在代码/文本段中吗?
【问题讨论】:
-
感谢链接器和后续的加载器,因为它们为您解决了所有这些问题。 (除了类型部分,它留给编译器)。