第六章运行时的存储空间 的运行时存储空间的结构和分配 过程活动记录AR 运行时变量的访问
第六章 运行时的存储空间 运行时存储空间的结构和分配 过程活动记录AR 运行时变量的访问
运行时的存储空间结构 ●要保存的信息: 目标代码;数据;库函数代码;数据信息表; 控制信息等 e运行时的存储空间结构: 最大地址 堆区空间 栈区空间 最小地址 库代码空间 静态区空间 目标代码空间
运行时的存储空间结构 要保存的信息: 目标代码;数据;库函数代码;数据信息表; 控制信息等 运行时的存储空间结构: 目标代码空间 静态区空间 库代码空间 堆区空间 栈区空间 最大地址 最小地址
运行时静态区的分配 存储对象的存储位置在程序的整个生命 周期是固定的。 分配对象 全程变量常量信息表 ●分配方法: 块地址法:( DataArea,0 ffset) 变址模式:( Register,0 ffset)
运行时静态区的分配 存储对象的存储位置在程序的整个生命 周期是固定的。 分配对象: 全程变量 常量 信息表 分配方法: 块地址法:(DataArea,Offset) 变址模式:(Register,Offset)
栈区的存储分配 ●存在递归调用 存储对象: 过程中被声明的形参、局部变量临时变量 e分配方法: 对每个被调用过程分配一段存储空间,sp存放当前 过程空间的开始地址;对变量X:( Leve l,off) 则其存放地址为off[sp] 过程结束时自动释放空间; ●不能存储: 值的生命周期长于过程的变量 动态申请空间的变量;
栈区的存储分配 存在递归调用 存储对象: 过程中被声明的形参、局部变量 临时变量 分配方法: 对每个被调用过程分配一段存储空间,sp存放当前 过程空间的开始地址;对变量X:(Level,off), 则其存放地址为off[sp]。 过程结束时自动释放空间; 不能存储: 值的生命周期长于过程的变量; 动态申请空间的变量;
堆区的存储分配 e可随时分配和释放空间 ●存储对象: 动态申请空间的变量的值 e释放空间方法: 显示释放: 隐式释放:单指针释放 计数释放法 标记释放法 分配空间方法: 最佳符合法;首次优先法;循环首次优先法
堆区的存储分配 可随时分配和释放空间 存储对象: 动态申请空间的变量的值 释放空间方法: 显示释放: 隐式释放:单指针释放 计数释放法 标记释放法 分配空间方法: 最佳符合法;首次优先法;循环首次优先法