进程的地址空间
地址空间的组成
区域 | 功能 |
---|---|
代码段(Text Segment) | 存放可执行程序的代码(指令),通常是只读的,以防止程序错误修改自身代码。 |
数据段(Data Segment) | 存放已初始化的全局变量和静态变量。 |
BSS 段(BSS Segment) | 存放未初始化的全局变量和静态变量,初始化为 0。 |
堆(Heap) | 动态内存分配区(如通过 malloc 或 new 分配的内存),从低地址向高地址扩展。 |
栈(Stack) | 用于函数调用时保存局部变量、返回地址等,从高地址向低地址扩展。 |
内核空间(Kernel Space) | 一部分地址空间通常被保留给内核,用于操作系统管理,用户进程无法直接访问。 |
地址空间布局
- 操作系统通常为进程提供固定的地址空间布局,例如:
1 | 低地址 |