§86 堆式存储管理程序语言允许用户程序动态申请和释放空间,如:C语言:malloc:在动态存储区中分配一块连续区域; calloc:在动态存储区中分配n块连续区域; free:释放一块动态存储区空间; PASCAL语言: New、GetMem:在动态存储区中分配一块连续区域; Dispose、FreeMem:释放一块动态存储区空间;当程序语言允许用户程序动态申请和释放空间时,数据存储空间的请求与
单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级§8.4 简单的栈式存储分配 —— C语言过程的数据区数 组 区活动记录 §8.4.1 语言特性: 过程允许递归调用§8.4.2 存储区结构: 例:全局数据说明Main() { main中数据说明 … R … }Void R(){ R中数据说明 … Q … }Void Q(){ Q
§83 静态存储分配FORTRAN语言如果编译时能确定一个程序在运行时所需的存贮空间大小,则可以在编译时安排目标程序的全部数据空间,并确定每个数据项的单元地址。这种存贮空间分配方法称为 “静态存储分配”。静态存储分配特点 1) 编译时刻确定存储位置;2) 目标程序执行时不必进行存储管理。目标程序 代码特别简单、高效。 FORTRAN语言的特点:(FORTRAN 77) 1) 过程不允许递归调用
§84 简单的栈式存储分配 C语言过程的数据区数 组 区活动记录§841 语言特性:过程允许递归调用;§842 存储区结构: 例:全局数据说明Main() { main中数据说明… R;…}Void R(){ R中数据说明 … Q; … }Void Q(){ Q中数据说明 … R L处 … }过程调用顺序:main→R1→Q→R2存储空间:SP:现行过程活动记录的起点;TOP:已占用存储空间的栈
单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级§8.5 嵌套过程语言的栈式存储分配 (PASCAL语言) §8.5.1 语言特性:⑴.过程允许递归调用⑵.可变数组⑶.过程嵌套定义 (内层过程可引用外层过程定义的名字)层数:过程定义的嵌套层次约定:主程序的层数=0P中定义: QR若P的层数=n 则:Q的层数=n1R的层数=n1称:P 是 QR 的直接外层过程
§85 嵌套过程语言的栈式存储分配 (PASCAL语言) §851 语言特性:⑴过程允许递归调用;⑵可变数组;⑶过程嵌套定义; (内层过程可引用外层过程定义的名字)层数:过程定义的嵌套层次;约定:主程序的层数=0;P中定义: Q,R,若P的层数=n, 则:Q的层数=n+1;R的层数=n+1;称:P 是 Q,R 的直接外层过程,Q,R 是P的内层过程Q,R 是同层的过程 ProgramP;var
单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级CH8 运行时存储空间组织编译程序总框 符 号 表词法分析器语法分析器语义分析器代码优化出 错 处 理源程序目标程序单词符号流语法单位流中间代码程序中间代码程序 目标代码生成 存储空间组织存储空间分配策略 1).静态分配 存储分配由编译程序在编译时进行 2).动态分配 在编译时
CH8运行时存储空间组织编译程序总框 符 号 表词法分析器语法分析器语义分析器代码优化出错处理源程序目标程序单词符号集语法单位集中间代码程序中间代码程序目标代码生成 存储空间组织存储空间分配策略1)静态分配 存储分配由编译程序在编译时进行;2)动态分配 在编译时生成相应(申请空间)的目标 程序,在目标程序运行时,执行该代码, 进行存储分配。(有:栈式存储分配,堆式存储分配)影响存储分配策略的源语言
§83 静态存储分配FORTRAN语言如果编译时能确定一个程序在运行时所需的存贮空间大小,则可以在编译时安排目标程序的全部数据空间,并确定每个数据项的单元地址。这种存贮空间分配方法称为 “静态存储分配”。静态存储分配特点 1) 编译时刻确定存储位置;2) 目标程序执行时不必进行存储管理。目标程序 代码特别简单、高效。 FORTRAN语言的特点:(FORTRAN 77) 1) 过程不允许递归调用
违法有害信息,请在下方选择原因提交举报