在程序执行过程中,操作系统将代码分成四个区域,分别为代码区、数据区、堆区、栈区。
数据区
又称全局区(global),此区域又分为三部分。
bss段:存放未初始化的静态变量(全局、局部)以及初始化为0的静态变量(全局、局部)。
data段:存放初始化非0的静态变量(全局,局部)。
rodata段:存放初始化为0的全局常量,以及初始化非0的全局常量。
堆区
一般由程序员分配释放,若程序员不释放,程序结束时可能由操作系统回收。
代码区
存放函数体的二进制形式。
代码区的代码为只读,防止修改,利于程序的调用.
栈区
由编译器自动分配释放,存放函数的参数值,局部变量的值等。
其操作方式类似于数据结构中的栈。
地址位置
一般情况下,地址从高位到低位的顺序为栈区、堆区、数据区、代码