编译原理 符号表5指导.pptVIP

  • 7
  • 0
  • 约7.49千字
  • 约 48页
  • 2017-03-30 发布于湖北
  • 举报
第十章 目标程序运行时的存储组织 10.1 数据空间的使用与管理 数据空间的使用和管理方法分成二种: 静态存储分配 动态存储分配 栈式动态存储分配 堆式动态存储分配 如果一个名字的性质通过说明语句或隐式或显式规则而定义,则称这种性质是“静态”确定的。 在编译时就能确定目标程序运行中所需的全部数据空间的大小,并安排好目标程序运行时的全部数据空间,确定每个数据对象的存储位置,这种分配策略为静态存储分配。 动态存储管理技术有两种方式: 栈式(stack) 堆式(heap) ◆栈式动态存储分配策略适用于PASCAL,C/C++,ALGOL之类 具有递归结构的语言的实现。 ★如果一个程序语言提供用户自由地申请数据空间和退还数据空间的机制,如C++中的new,delete等机制,或者不仅有过程而且有进程的程序结构的情况下,空间的使用未必服从“先申请后释放,后申请先释放”的原则,那么栈式的动态分配方案就不适用了。 通常使用一种称为堆式的动态存储分配方案。 ★定长块管理 ★变长块管理 定长块管理 堆式动态存储分配最简单的实现是按定长块进行。 (1)初始化时,将堆存储空间分成长度相等的若干块,每块中指定一个链域,按照邻块的顺序把所有块链成一个链表,用指针available指向链表中的第一块。 (2)分配时每次都分配指针available所指的块,然后available指向相邻的下一

文档评论(0)

1亿VIP精品文档

相关文档