堆栈帧上的访问链接是什么?

时间:2016-08-30 14:50:49

标签: c callstack

我有来自维基百科的access links,但我无法清楚地了解访问链接是什么以及它们与任何功能的返回地址有何不同。有人可以简要解释一下访问链接是什么以及为什么在调用堆栈中需要它?

1 个答案:

答案 0 :(得分:5)

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

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

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

func1执行结束时,result变量将包含5,它是本地定义的变量outerinner的总和。

access link正是为了这个目的 - 将“指针”传递给实际的外部范围到内部函数中。

gcc编译器Nested Functions extension不是{n}提到的C标准的一部分