第六章 运行时存储空间组织和管理.pptVIP

  • 1
  • 0
  • 约5.03千字
  • 约 97页
  • 2017-06-30 发布于河南
  • 举报
第六章 运行时存储空间组织和管理

第六章 运行时存储空间的 组织和管理; 本章内容: 讨论一个活动记录中的数据安排 程序执行过程中,所有活动记录的组织方式 存储器的组织与存储分配的策略 非局部名称的访问 参数传递 ;6.1 局部存储分配策略;6.1.2 名字的作用域和绑定;名字的绑定 运行时为名字X分配存储空间S,这一过程称为绑定 (binding)。 换句话说,绑定是名字X与存储空间S的结合。; 名字的声明与名字的绑定均需要有对应的存储空间,而存储空间的对应方式,一个是静态的,一个是动态的。 声明时关心的是声明的作用域,即当一个名字被引用时,在不同的作用域中与该名字的不同声明结合; 绑定时关心的是绑定的生存期,即当一个名字在运行时被实际分配的存储单元,名字与存储单元结合的这段时间被称为绑定的生存期,显然此生存期应该和名字的生存期一致。 ;变量与值的两步映射;6.1.3 活动记录;返回值;6.1.4 局部数据的安排 字节是可编址内存的最小单位。;6.1.4 局部数据的安排 字节是可编址内存的最小单位。 变量所需的存储空间可以根据其类型而静态确定。;6.1.4 局部数据的安排 字节是可编址内存的最小单位。 变量所需的存储空间可以根据其类型而静态确定。 一个过程所声明的局部变量,按这些变量声明时出现的次序,在局部数据域中依次分配空间。;6.1.4 局部数据的安排 字节是可编址内存的最小单位。 变量所需的存储空间可以根据其类型而静态确定。 一个过程所声明的局部变量,按这些变量声明时出现的次序,在局部数据域中依次分配空间。 局部数据的地址可以用相对于某个位置的地址来表示。;6.1.4 局部数据的安排 字节是可编址内存的最小单位。 变量所需的存储空间可以根据其类型而静态确定。 一个过程所声明的局部变量,按这些变量声明时出现的次序,在局部数据域中依次分配空间。 局部数据的地址可以用相对于某个位置的地址来表示。 数据对象的存储安排还有一个对齐问题。;6.1.5 程序块 本身含有局部变量声明的语句 可以嵌套 最接近的嵌套作用域规则 并列程序块不会同时活跃 并列程序块的变量可以重叠分配;main() { /? begin of B0 ?/ int a = 0; int b = 0; { /? begin of B1 ?/ int b = 1; {/? begin of B2 ?/ int a = 2; }/? end of B2 ?/ {/? begin of B3 ?/ int b = 3; }/? end of B3 ?/ }/? end of B1 ?/ }/? end of B0 ?/;main() { /? begin of B0 ?/ int a = 0; int b = 0; { /? begin of B1 ?/ int b = 1; {/? begin of B2 ?/ int a = 2; }/? end of B2 ?/ {/? begin of B3 ?/ int b = 3; }/? end of B3 ?/ }/? end of B1 ?/ }/? end of B0 ?/;main() { /? begin of B0 ?/ int a = 0; int b = 0; { /? begin of B1 ?/ int b = 1; {/? begin of B2 ?/ int a = 2; }/? end of B2 ?/ {/? begin of B3 ?/ int b = 3; }/? end of B3 ?/ }/? end of B1 ?/ }/? end of B0 ?/;6.2 全局存储分配策略;6.2 全局存储分配策略;6.2 全局存储分配策略;6.2 全局存储分配策略;6.2 全局存储分配策略; 静态分配策略在编译是对所有对象分配固定的存储单元。且在运行是保持不变。 栈式动态分配策略在运行时把存储器作为一个栈进行管理,运行时,每当调用一个过程,它所需要的存储空间就动态的分配于栈顶,一旦退出,它所占空间就予以释放。 堆式动态存储策略在运行时把存储器组织成堆结构,以便用户关于存储空间的申请与归还(回收),凡申请者分给一块,凡释放者退回给堆。 ;6.2.1 运行时内存的划分 ;6.2.2 静态存储分配 如果在编译时就能够确定一个程序在运行时所需要的存储空间的大小,则在编译时就能够安排好目标程序

文档评论(0)

1亿VIP精品文档

相关文档