应用程序的内存管理

应用程序的组成

从汇编语言角度,一个程序分为:

  • 数据段
  • 堆栈段
  • 代码段
  • 扩展段

从高级语言(如 C 语言)的角度来看,,一个程序分为如下段(当然还有其他段,这里列举主要的段):

  • 代码段(text)
  • 数据段(data)
  • BSS 段
  • 栈(stack)
  • 堆(heap)

一般情况下,一个可执行二进制程序(在 linux 下为一个进程单元),在存储时(没有加载到内存运行),至少拥有三个部分,分别是代码段(text)、数据段(data)、和BSS 段。

这三个部分一起组成了可执行程序(可能还有其他的段,和平台相关)

当应用程序运行时(运行态),此时需要另外两个域:堆和栈。正在运行的程序:代码段 + 数据段 + BSS 段 + 堆 + 栈。

如图所示为可执行应用程序存储态和运行态的结构对照图。一个正在运行的 C 程序占用的内存区域分为代码段、数据段(初始化数据)、BSS 段(未初始化数据)、堆和栈 5 部分
在这里插入图片描述
内存管理
在将应用程序加载到内存空间执行时,操作系统负责代码段、数据段和 BSS 段的加载,并在内存中为这些段分配空间。栈也由操作系统管理,不需要程序员显式的管理;堆段需要程序员自己管理,显式的申请和释放。

动态分配

在运行时执行动态分配。需要程序员显式管理,通过 malloc 申请,并且需要手动 free 掉,否则会造成内存泄漏。

静态分配

在编译时就已经决定好了分配多少 Text+Data+Bss+Stack(静态分配)。
静态分配的内存在进程结束后由系统释放(Text+Data),Stack 上的数据则在退出函数后立即被销毁。

各段说明
代码段
代码段在内存中被映射为只读。它是由编译器在编译链接时自动计算的。通常是用来存放程序执行的指令。代码段输入静态内存分配。

数据段
通常用来存放程序中已初始化的(非 0)全局变量和静态局部变量。数据段的起始位置由链接定位文件确认,大小在编译链接时自动分配。数据段属于静态内存分配

BSS 段
bss 是英文 Block by Symbol 的简称。通常用来存放程序中未初始化和初始化为0的全局变量和静态局部变量,在程序载入时由内核清零。数据段属于静态内存分配


堆保存函数内部动态分配(malloc 或 new)的内存,是另外一种用来保存程序信息的数据结构。

堆是先进先出(FIFO)数据结构。堆的地址空间是向上增加,即当堆上保存的数据越多,堆的地址越高。动态内存分配

注意:堆内存需要程序员手动管理内存,通常适用于较大的内存分配,如频繁的分配较小的内存,容易导致内存碎片化。

栈保存函数的局部变量(不包括 static 修饰的变量),参数以及返回值。是一种后进先出(LIFO)的数据结构。

在调用函数或过程后,系统会清除栈上保存的局部变量、函数调用信息及其他信息。

栈的另外一个重要特征是,它的地址空间 向下减少,即当栈上保存的数据越多,栈的地址越低。静态内存分配

注意,由于栈的空间通常比较小,一般 linux 程序只有几 M,故局部变量,函数入参应该避免出现超大栈内存使用,比如超大结构体,数组等,避免出现爆栈(sack overflow)

参考资料
再谈应用程序分段

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
09年自考管理系统中计算机应用简答 第一章 计算机应用与企业管理现代化   1. 简述管理信息的作用?* 本P10   2. 何为企业中物流和信息流?二者有什么区别和联系?   3. 管理信息具有哪些特点?* 本P36   4. 简述管理信息常用的分类方法?P14   5. 工业企业中的固定信息主要由哪些部分组成?P15   6. 简述管理信息处理的内容?* 本P48   7. 什么是原始信息收集和二次信息收集?两种收集的关键问题是什么?P15   8. 试述现代企业对信息处理的要求* 本P61   9. 简述计算机应用对企业管理现代化的促进作用 * 本P72 2000年考简答:什么叫管理工作标准化?包括什么内容?   10. 简述管理信息系统阶段的主要特点 P18   11. 试述半结构化决策问题的特征 P18   12. 简述决策支持系统的特点(简述DSS的特点?)* 本P96   13. 简述DSS的基本结构 P19   14. 简述主管支持系统主要功能 P19   15. 简述计算机集成制造系统的特点(简述CIMS的特点?)* 本P84   16. 简述发展电子数据交换(EDI)的作用 P20   17. 管理系统中计算机应用,应具备哪些科学管理的基础 P20   18. 试述在建立企业管理信息系统过程中企业领导的作用 P21   19. 简述在建立企业管理信息系统过程中,对管理人员培训的层次和内容 P22   20. 试述商业企业管理信息系统的层次组成及主要功能 P22   第二章 数据库的基本知识   21. 什么是数据库应用系统 P26   22. 什么是数据库?特点是什么? P27   23. 关系数据库模型的特点是? P27   24. 什么是数据模型?有哪几种常用的数据模型?P27   25. 什么是数据库管理系统?简单说明它的组成?P27   26. 什么是数据库系统?它与文件系统有什么区别?P27   第三章 FoxBASE的命令与操作   27. FoxBASE属于哪类数据模型?有什么特点?P49   28. FoxBASE有哪几种工作方式?他们的特点?P49   29. FoxBASE的命令格式是怎样的?各部分的作用如何?P49   30. FoxBASE中可以使用的数据类型有几种?各种数据类型的特点和规定有哪些?P50   31.字段变量与内存变量的区别?数组变量与简单变量的区别?P50   32.怎样定义变量?怎样给变量赋值?P50   33.表达式有哪几种类型?由什么因素决定其类型?P51   34.什么叫数据匹配?为什么要数据匹配?P51   35.库文件名和字段名的命名各有何异同?P52   36.怎样打开和关闭数据库文件?为什么要打开和关闭数据库文件?P52   37.可以用什么办法向数据库文件中追加记录?举例说明 P52   38.修改库文件记录的命令有哪几条?他们各自的特点是什么?试比较他们。 P52   第四章 FoxBASE的程序设计   39.简述结构化程序的主要特点、基本原则和基本步骤?P76   40.结构化程序设计的三种程序结构是什么?各有的特点?P77   41结构化程序设计的基本工具是什么?怎样使用?P77   42在FoxBASE中怎样建立程序和修改程序?P77   43在FoxBASE中怎样调试程序?有哪些常用的调试命令?P78   第五章 管理信息系统开发概论   44简述系统开发的任务?* 本P11   45简述系统开发的特点?* 本P24   46简述系统开发的指导原则? P93   47系统开发过程中,应如何体现系统的整体性原则?*(简述整体性开发系统的过程?) 本P36   48简述系统开发过程中文档的作用*(简述系统开发文档的作用?)本P48   49简述系统开发的主要方法及他们的特点 P95   50简单分析系统生命周期法的主要优缺点?(简述生命周期法的特点?)* 本P96   51简述原型法的主要优点?(简述原型法的特点?)* 本P85   52简述CASE的目标和作用?*(简述CASE的作用?) 本P61   53系统开发的主要方式有哪些? P98   54简述系统开发各种方式的优缺点?P98   55简述系统开发领导小组的职责? P99   56简述系统开发中系统分析员的任务及应具备的素质?P99   57简述在系统开发中程序设计员和企业管理人员的任务和应具备的素质?P100   58简述系统开发过程中进行项目管理的必要性和项目管理的方法?P100   第六章 系统分析   59简述可行性分析小组人员和工作内容?P115   60简述系统总体方案基本内容?* 本P12   61方案的可行性应从哪些方面进行分析和评价?*(简述可行性分析的基本内容?)本P25   62可行性分析报告论证可能提出的建议有哪几种?P116   63试述现状调查参加人员和常用的调查方法? P116   64试述在系统分析中,对描述、分析系统的工具(各种图、表和方法)的要求? P116   65试述数据流成图的作用与特点?*(简述数据流成图的特点?) 本P36   66试述采用分层次数据流成图来描述系统,有哪些优点?P117   67试述数据字典编写的基本要求? P117   68简述手工数据字典中条目的形式和主要内容?*(简述数据字典的基本内容?)本P48   第七章 系统设计   69试述计算机应用软件系统具有可修改性的重要意义? P137   70简述模块间调用的规则?P138   71何谓数据凝聚的模块?P138   72何谓功能凝聚的模块?P138   73简述模块偶合的类型?P139   74简述在关系数据库中关系具有的性质?P139   75简述E-R图中实体之间联系的类型?P139   76简述由E-R图向关系模型转换的规则?P140   77简述计算机主机选型的步骤?P140   78系统软件主要包括哪些内容?P140   79常用的操作系统有哪几种?P141   80简述计算机网络的功能?P141   81简述局域网拓扑结构分哪几种,及他们的性能比较?P141   82输入数据校验的主要方法有哪些? P141   83通过校验位可以发现代码的哪些错误? P142   第八章 系统实施   84简述系统实施阶段的重要性及主要活动?P156   85系统实施应作好哪些准备工作?P156   86试述系统实施阶段对用户培训的内容和方式? P157   87简述程序设计的质量要求?P157   88为什么要进行系统测试?P158   89简述系统测试的基本原则?P158   90如何设计测试用例?P158   91简述系统测试中可能发生的错误类型? P159 2000年考简答   92简述系统测试的步骤?P159   93试比较系统转换各种方式的优缺点?P160   94简述用户操作手册包含的内容?P160   95简述程序说明书的主要内容?P161   第九章 系统的管理与维护   96试述企业信息组织中,集中与分散相结合的工作方式?P169   97试述我国信息中心在企业组织结构中的地位?P170   98简述信息中心各类人员的职责和素质要求?P170   99试述保证信息系统安全性与质量控制的重要意义?P171   100简述物理安全控制的内容?P171   101简述安全控制中人员及管理控制的内容?P172   102为什么要进行存取控制?P172   103简述存取控制的基本方法?P172   104简述应用软件系统维护的类型?P172   105试述数据库重组织与重构造的目的和工作内容?P173

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值