您的位置:首页 > 其它

程序运行时内存的各种数据段

2015-08-30 08:23 113 查看
1.简介
在linux系统中,程序在内存中的分布如下所示:



其中 :
.text :代码段,部分是编译后程序的主体,也就是程序的机器指令。保存函数的地址。

BSS段:(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS段属于静态内存分配。
因为是全局变量,所以在程序运行的整个生命周期内都存在于内存中。有趣的是这个段中的变量只占用程序运行时的内存空间,而不占用程序文件的储存空间。
.data:数据段(data segment)通常是指用来存放程序中已初始化
的全局变量
的一块内存区域。数据段属于静态内存分配。
初始化过的全局变量数据段,该段用来保存初始化了的非0的全局变量,如果全局变量初始化为0,则编译有时会出于优化的考虑,将其放在bss段中。因为也是全局变量,所以在程序运行的整个生命周期内都存在于内存中。与bss段不同的是,data段中的变量既占程序运行时的内存空间,也占程序文件的储存空间。
heap(堆)中保存程序中动态分配的内存,比如C的malloc申请的内存,或者C++中new申请的内存。堆向高地址方向增长。
stack(栈)用来进行函数调用,保存函数参数,临时变量,返回地址等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: