程序在内存中的分布
1. 内存地址
在现代的操作系统中,当我们说到内存,往往需要分两部分来讲:物理内存 和 虚拟内存。从硬件上讲,虚拟空间是 CPU 内部的寻址空间,位于 MMU 之前,物理空间是总线上的寻址空间,是经过 MMU 转换之后的空间。
虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。目前,大多数操作系统都使用了虚拟内存,如 Windows 家族的"虚拟内存";Linux 的"交换空间"等。
一般我们所说的程序在内存中的分布指的就是程序在虚拟内存中的存储方式从低地址到高地址,可分为下面几段:
区域 | 功能 |
---|---|
预留内存地址 | 操作系统维护的内存地址,不可访问 |
程序代码区 | 只读,存代码和一些其他的东西 |
data段 | 存初始化的全局变量和static变量,另外还有文字常量区,常量字符串就是放在这里,程序结束后有系统释放 | </