您的位置:首页 > 运维架构 > Linux

linux进程中内存的划分

2016-10-31 18:47 218 查看
进程中的内存区域划分

 int num;    // 全局变量 默认初始值为0 位置在BSS段

 int main(void)

 {

   int num;  // 局部变量 默认初始值为随机数 位置在栈区

   

   return 0;

 }

(1) 代码区(Text)

  - 主要用于存放具体的功能代码,函数指针指向该区域;

  - 如可执行指令

(2) 只读常量区(Text)

  - 主要存放常量字符串,字面值常量,具有常属性并已经被初始化的全局变量和静态局部变量

     const int i = 20;

     static const int i = 20;

(3) 全局区/数据区(Data)

- 主要用于存放不具有常属性但已经被初始化的全局变量和静态局部变量

(4) BSS段(Data);

-主要存放不具有常属性也没有初始化的全局变量和静态局部变量

-该区域会在main函数之前自动清零

(5)堆区(Head)

-主要指使用malloc.calloc.realloc/free()操作的区域

-该区域由程序员手动申请和手动释放

(6)栈区

-主要存放非静态的变量

-该区域由操作系统自动管理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: