本文共 679 字,大约阅读时间需要 2 分钟。
一个典型的Linux C程序内存空间由如下几部分组成: 代码段(.text):这里存放代码、全局常量(const)、字符串常量。代码段是可共享的,相同的代码在内存中只会有一个拷贝,同时这个段是只读可执行的,防止程序由于错误而修改自身的指令。
初始化数据段(.data):这里存放的是程序中已初始化的全局变量和初始化的静态变量(全局以及局部的)。 未初始化数据段(.bss):存放的是未初始化的全局变量和未初始化的静态变量。位于这一段中的数据,内核在执行该程序前,将其初始化为0或者null。 堆(Heap):这个段用于在程序中进行动态内存申请,例如经常用到的malloc,new系列函数就是从这个段中申请内存。 栈(Stack):函数中的局部变量(不包括静态变量)以及局部只读变量(const)保存在此段中。