没有合适的资源?快使用搜索试试~ 我知道了~
编译原理与技术第15讲 运行存储分配1
需积分: 0 0 下载量 197 浏览量
2022-08-03
15:10:35
上传
评论 1
收藏 563KB PDF 举报
温馨提示
试读
60页
即在编译时仅产生各种必要的信息,而在运行时刻,再动态地分配数据对象的存储空间栈式存储分配堆式存储分配运行存储分配策略静态和动态分别对应编译时刻和运行时刻运行时内
资源详情
资源评论
资源推荐
编译器在工作过程中,必须为源程序中出现的一些数据对
象分配运行时的存储空间
对于那些在编译时刻就可以确定大小的数据对象,可以在
编译时刻就为它们分配存储空间,这样的分配策略称为静
态存储分配
反之,如果不能在编译时完全确定数据对象的大小,就要
采用动态存储分配的策略。即在编译时仅产生各种必要的
信息,而在运行时刻,再动态地分配数据对象的存储空间
栈式存储分配
堆式存储分配
运行存储分配策略
静态和动态分别对应
编译时刻和运行时刻
运行时内存的划分
静态代码区
静态数据区
栈(Stack)区
堆 (Heap)区
动
态
数
据
区
域
空闲内存
使用过程(或函数、方法)作为用户自定义动作的单元的
语言,其编译器通常以过程为单位分配存储空间
过程体的每次执行称为该过程的一个活动
(activation)
过程每执行一次,就为它分配一块连续存储区,用来管
理过程一次执行所需的信息,这块连续存储区称为活动
记录
( activation record )
活动记录
活动记录的一般形式
实参
临时变量
控制链
访问链
保存的机器状态
局部数据
指向调用者的活动记录
用来访问存放于其它活
动记录中的非局部数据
返回值
在静态存储分配中,编译器为每个过程确定其活动记
录在目标程序中的位置
这样,过程中每个名字的存储位置就确定了
因此,这些名字的存储地址可以被编译到目标代码中
过程每次执行时,它的名字都绑定到同样的存储单元
静态存储分配
剩余59页未读,继续阅读
杜拉拉到杜拉拉
- 粉丝: 19
- 资源: 325
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0