可执行程序的内存分布
GNU编译器生成的目标文件默认格式为elf(executive linked file)格式,这是Linux系统所采用的可执行链接文件的通用文件格式。elf格式由若干个段(section)组成,由标准c源代码生成的目标文件中包含以下段:
.text(正文段)包含程序的指令代码,
.data(数据段)包含固定的数据,如常量,字符串等,
.bss(未初始化数据段)包含未初始化的变量和数组等。
在操作系统中,一个进程就是处于执行期的程序(当然包括系统资源),实际上正在执行的程序代码的活标本。那么进程的逻辑地址空间是如何划分的呢?
图1做了简单的说明(Linux系统下的):