Linux——虚拟内存空间分布
虚拟地址空间分布图
用户空间内存空间分布描述
系统内的程序分为程序段和数据段,具体又可细分为一下几个部分:
-
text段-代码段
text段存放程序代码,运行前就已经确定(编译时确定),通常为只读,可以直接在ROM或Flash中执行,无需加载到RAM。 -
rodata段(read-only-data)-常量区
rodata段存储常量数据,比如程序中定义为const的全局变量,#define定义的常量,以及诸如“Hello World”的字符串常量。只读数据,存储在ROM中。注意:
(1)有些立即数与指令编译在一起,放在text段。
(2)const修饰的全局变量在常量区;const修饰的局部变量只是为了防止修改,没有放入常量区。
(3)编译器会去掉重复的字符串常量,程序的每个字符串常量只有一份。
(4)有些系统中rodata段是多个进程共享的,目的是为了提高空间利用率。 -
data段-数据段
data存储已经初始化的全局变量,属于静态内存