堆栈帧上的访问 link 是什么?
What is an access link on a stack frame?
我从 wikipedia 获得了大约 access links,但我无法清楚地了解什么是访问 link 以及它们与任何函数的 return 地址有何不同。有人可以简要解释什么是访问 link 以及为什么它在调用堆栈上是必需的吗?
你实际上会在 Pascal
或 Java
中遇到这样的范例,例如 C
。
例如,在 Java 中,您可以声明:
void func1() {
int outer = 2;
int func2() {
int inner = 3;
return inner+outer;
}
int result = func2();
}
在 func1
执行结束时,result
变量将包含 5,它是局部定义变量 outer
和 inner
.[=22= 的总和]
access link
正是用于此目的 - 将 'pointer' 传递给实际的外部作用域到内部函数中。
gcc
编译器有 Nested Functions extension,它不是 n.m 提到的 C
标准的一部分
我从 wikipedia 获得了大约 access links,但我无法清楚地了解什么是访问 link 以及它们与任何函数的 return 地址有何不同。有人可以简要解释什么是访问 link 以及为什么它在调用堆栈上是必需的吗?
你实际上会在 Pascal
或 Java
中遇到这样的范例,例如 C
。
例如,在 Java 中,您可以声明:
void func1() {
int outer = 2;
int func2() {
int inner = 3;
return inner+outer;
}
int result = func2();
}
在 func1
执行结束时,result
变量将包含 5,它是局部定义变量 outer
和 inner
.[=22= 的总和]
access link
正是用于此目的 - 将 'pointer' 传递给实际的外部作用域到内部函数中。
gcc
编译器有 Nested Functions extension,它不是 n.m 提到的 C
标准的一部分