编译与链接内存模型详解
1. 内存模型概述
内存模型描述了系统中内存的指定方式。在系统里,内存通常被划分为不同的命名区域。C 标准、目标文件以及 ARM 芯片对内存的描述使用了不同的名称。更复杂的是,还能通过 C 语言扩展自定义内存区域名称,这就需要告知链接器如何处理这些自定义区域。
2. 理想 C 模型
在理想情况下,C 程序中的所有内容会被分配到标准的内存区域:文本(text)、数据(data)或未初始化数据(bss)。
- 文本区域(text) :存放只读指令和只读数据。例如:
int main() {
doIt("this goes in text too");
return();
}
在上述代码中, main 函数的代码以及字符串常量 "this goes in text too" 都存放在文本区域。
- 数据区域(data) :用于存放已初始化的全局变量。示例如下:
int anExample = 5;
- 未初始化数据区域(bss) :存放未初始化的全局变量。虽然标准规定 bss 区域是未初始化的,但在常见的 C 编程系统实现中,该区域会被初始化为零。例如:
超级会员免费看
订阅专栏 解锁全文
1180

被折叠的 条评论
为什么被折叠?



