在Linux 系统内存分配
2017-05-15 10:53
162 查看
在Linux 系统内存分配
2015-08-20 16:06 596人阅读 评论(0) 收藏 举报版权声明:本文为博主原创文章,未经博主允许不得转载。
BSS(Block Started by Symbol)通常是指用来存放程序中未初始化的全局变量和静态变量的一块内存区域。特点是:可读写的,在程序执行之前BSS段会自动清0。所以,未初始的全局变量在程序执行之前已经成0了。
数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。
代码段:代码段(code segment/text segment)通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读, 某些架构也允许代码段为可写,即允许修改程序。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。
堆(heap):堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减)
栈(stack):栈又称堆栈, 是用户存放程序临时创建的局部变量,也就是说我们函数括弧“{}”中定义的变量(但不包括static声明的变量,static意味着在数据段中存放变量)。除此以外,在函数被调用时,其参数也会被压入发起调用的进程栈中,并且待到调用结束后,函数的返回值也会被存放回栈中。由于栈的先进先出特点,所以栈特别方便用来保存/恢复调用现场。从这个意义上讲,我们可以把堆栈看成一个寄存、交换临时数据的内存区
相关文章推荐
- linux内存管理--伙伴系统分配内存准备工作
- Linux系统的内存分配
- 简述Linux内存分配--伙伴系统 原理
- Linux 系统编程手册第7章-内存分配
- linux内存模型之buddy(伙伴)系统二分配与释放
- Linux内存分配机制之伙伴系统和SLAB
- 浅谈c语言内存分配之一(linux系统)
- Linux系统下,能保证物理空间上连续的内存分配函数是?
- linux系统如何释放内存
- Linux系统内存错误产生的原因及调试方法(段错误|core dumped) 谢谢这篇文章的作者
- 系统内存常见的分配方式
- 怎样让32位的windows和linux系统支持64G内存
- 用java取得linux系统cpu、内存的实时信息
- Linux下检查内存泄漏、系统性能的系列工具
- 用java取得linux系统cpu、内存的实时信息
- linux显示系统内存free
- 在 Linux 和 Windows 下给 Tomcat 分配大内存设置方法
- 如何判断linux系统是否要添加内存
- java对Linux系统的CPU利用率的计算和内存信息的获取
- 用MRTG监测Linux系统网络、CPU、内存和硬盘情况