linux——进程中的内存区域划分

来源:互联网 发布:御名阁宝宝起名软件 编辑:程序博客网 时间:2024/05/18 03:01

有几天没来了,今天翻到了进程中内存区域划分笔记 ,就简单写写

(1)代码区:(text)

主要用于存放功能代码,函数指针指向该区域,比如函数名。

(2)只读常量区:(text)

存放字符串常量和用const修饰的,并且已经初始化的全局变量和静态局部变量。

(3)全局区/数据区:(data)

存放已经初始化的全局变量和静态局部变量(这个区的数据都有存储空间,生命周期是整个程序)。

(4)bss段:

存放没有初始化的全局变量和静态局部变量,bss段会在main函数执行前清0。

(5)堆区:

主要表示使用malloc / calloc / realloc / free等手动申请的动态内存,需要手动释放。

(6)栈区:

主要存放非静态局部变量(包括函数的参数),块变量,有操作系统自动管理。

进程主要分为这几个区。在进程和线程的使用中注意变量所在的区域。否则很容易出现段错误

0 0