- 52
- 0
- 约1.04万字
- 约 53页
- 2015-12-17 发布于广东
- 举报
第9章运行时存储空间的组织和管理 本章学习目标 翻译程序必须分配目标程序运行时所需要的存储空间。这些空间包括:用户定义的各类型的变量和常数所需要的存储空间;作为保留中间结果和参数传递用的临时工作单元;调用过程或函数时所需要的连接单元。返回地址以及组织输入/输出所需要的缓冲区。本章主要内容: 静态存储分配 栈式存储分配 堆式动态存储分配 9.1存储分配策略 在目标代码生成之前,编译程序必须进行目标程序运行环境的设计和数据空间的分配。编译程序需要从操作系统中为目标程序的运行申请一段存储区。这段存储空间包括两部分,一部分为容纳目标代码的区域,另一部分为目标代码运行时需要的数据空间。这部分数据空间包括:用户定义的各种类型的数据对象所需要的存储空间,作为保留中间结果和传递参数的临时工作单元,调用过程时所需要的连接单元,以及组织输入/输出所需要的缓冲区。目标代码需要的内存空间编译时可以确定,而有些数据对象只有运行时填入。 数据空间的使用和管理方法可以分成三种:静态存储分配、栈式动态存储分配和堆式动态存储分配。 9.2静态存储分配 如果在编译时就能够确定一个程序在运行时所需的存储空间大小,那么则在编译时就能安排好目标程序运行时的全部数据空间,并能确定每个数据项的单元地址。存储空间的这种分配方法叫做静态分配。对于FORTRAN语言来说,其特点是不允许过程有递归性,每个数据名所需要的存储空间
原创力文档

文档评论(0)