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)栈区
-主要存放非静态的变量
-该区域由操作系统自动管理
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)栈区
-主要存放非静态的变量
-该区域由操作系统自动管理
相关文章推荐
- Linux的用户进程是如何使用内存的
- 看了一篇老外的文章后终于明白了为什么linux下用top统计出来的进程内存不准确
- Linux下通过共享内存进行进程间通信,进程间同步使用信号量来实现
- linux 下取进程占用 cpu/内存 最高的前10个进程
- linux进程间共享内存通信详解
- 将 Win32 C/C++ 应用程序迁移到 POWER 上的 Linux,第 1 部分: 进程、线程和共享内存服务 (转载)
- linux进程通讯-共享内存http://doc.chinaunix.net/linux/201010/996044.shtml
- linux下查看某进程内存使用(转)
- Linux进程间通讯之共享内存
- Linux学习总结—内存结构、启动和进程空间
- 将 Win32 C/C++ 应用程序迁移到 POWER 上的 Linux,第 1 部分: 进程、线程和共享内存服务 (转)
- 如何在linux下看进程实际占用内存
- Linux用户进程是如何释放内存的
- linux如何查看当前占用CPU或内存最多的5个进程
- linux低端内存用光后会导致oom-killer随机kill掉进程
- Linux学习总结—内存结构、启动和进程空间
- linux 进程的内存布局
- linux进程通信:共享内存(转)
- C/C++内存分配与Linux内存管理进程所涉及到的五个数据段
- [转]linux 下取进程占用 cpu/内存 最高的前10个进程