第七章运行时刻环境 许畅 南京大学计算机系 2022年春季 版权所有南京大学计算机科学与技术系许畅2022春季版
许畅 南京大学计算机系 2022年春季 第七章 运行时刻环境 版权所有 南京大学计算机科学与技术系 许畅 2022春季版 南大编译许畅
运行时刻环境 运行时刻环境 为数据分配安排存储位置 确定访问变量时使用的机制 过程之间的连接、参数传递 和操作系统、输入输出设备相关的其它接口 。主题 存储管理:栈分配、堆管理、垃圾回收 对变量、数据的访问 2
运行时刻环境 • 运行时刻环境 – 为数据分配安排存储位置 – 确定访问变量时使用的机制 – 过程之间的连接、参数传递 – 和操作系统、输入输出设备相关的其它接口 • 主题 – 存储管理:栈分配、堆管理、垃圾回收 – 对变量、数据的访问 2 南大编译许畅
存储分配的典型方式 目标程序的代码放置在代码区 静态区、堆区、栈区分别放置不同类型生命期的 数据值 代码区 静态区 堆区 空闲内存 栈区 3
存储分配的典型方式 • 目标程序的代码放置在代码区 • 静态区、堆区、栈区分别放置不同类型生命期的 数据值 3 南大编译许畅
静态和动态存储分配 静态分配 编译器在编译时刻就可以做出存储分配决定,不需要 考虑程序运行时刻的情形 全局常量、全局变量 动态分配 栈式存储:和过程的调用/返回同步进行分配和回收, 值的生命期与过程生命期相同 堆存储:数据对象比创建它的过程调用更长寿 手工进行回收 垃圾回收机制 4
静态和动态存储分配 • 静态分配 – 编译器在编译时刻就可以做出存储分配决定,不需要 考虑程序运行时刻的情形 – 全局常量、全局变量 • 动态分配 – 栈式存储:和过程的调用/返回同步进行分配和回收, 值的生命期与过程生命期相同 – 堆存储:数据对象比创建它的过程调用更长寿 • 手工进行回收 • 垃圾回收机制 4 南大编译许畅
栈式分配 。内容 活动树 活动记录 调用代码序列 栈中的变长数据 大编译许畅 5
栈式分配 • 内容 – 活动树 – 活动记录 – 调用代码序列 – 栈中的变长数据 5 南大编译许畅