从<Unix高级环境编程>中总结
按照高位排序:
1.栈,自动变量存储,每次函数调用的信息如函数结束后返回到的地址,调用者的环境信息.新调用的函数会为其自动临时变量分配空间.这就是递归函数的重点,每一次递归函数自我调用,一个新的栈帧会创建,因此他们的数据不会互相干涉到.
2.堆,程序运行时动态分配的数据会被存储在此.
3.未初始化数据段,通常被称为"bss"段,包含在程序中未被显式地初始化的全局变量,在程序被执行前,该段中的数据被内核初始化为数字0或者空指针.
4.已初始化数据段,通常被称为"data"段,包含在程序中被显式地初始化的全局变量.
5.文字段,通常被称为"code"段,CPU可执行的机器指令(二进制代码),文字段是可共享的,因此对于频繁使用的程序,在内存中仅需要维护一份.