不考大题
嵌套过程非局部量引用
嵌套过程语言(如 Pascal)允许过程内嵌套定义过程,内层过程可引用外层过程的变量。
静态链(SL, Static Link)
- 指向直接外层过程的最近活动 AR
- 沿 SL 链逐层查找可访问外层非局部变量
- 查找深度 = 嵌套层次差
- 每次过程调用时确定 SL 值(静态嵌套关系)
动态链(DL, Dynamic Link)
- 指向调用者的 AR(即返回后应恢复的栈帧)
- 用于过程返回时恢复调用者的栈环境
- 与控制流相关,与静态嵌套无关
重点 SL(静态链)用于访问非局部变量,沿静态嵌套层次查找。
Display 表(嵌套层次显示表)
目的:加速非局部变量访问,避免逐层查 SL 链。
- 数组 , 存放第 层最新活动的 AR 地址
- 访问嵌套深度为 的变量时直接取 ,无需逐层查找
- 过程进入/退出时维护 Display 表
堆分配
malloc/free(C)、new/delete(C++)- 程序运行中动态申请/释放
- 栈区与堆区通常相向生长