堆栈帧上的访问 link 是什么?

What is an access link on a stack frame?

我从 wikipedia 获得了大约 access links,但我无法清楚地了解什么是访问 link 以及它们与任何函数的 return 地址有何不同。有人可以简要解释什么是访问 link 以及为什么它在调用堆栈上是必需的吗?

你实际上会在 PascalJava 中遇到这样的范例,例如 C

例如,在 Java 中,您可以声明:

void func1() {
     int outer = 2;
     int func2() {
        int inner = 3;
        return inner+outer;
     }
     int result = func2();
}

func1 执行结束时,result 变量将包含 5,它是局部定义变量 outerinner.[=22= 的总和]

access link 正是用于此目的 - 将 'pointer' 传递给实际的外部作用域到内部函数中。

gcc 编译器有 Nested Functions extension,它不是 n.m 提到的 C 标准的一部分