我正在写一篇关于调用堆栈概念的文章,我想谈谈调用堆栈在不同语言中的局限性。
我知道有一些方法可以查看调用堆栈上可以有多少帧,例如:
Python
import sys
print(sys.getrecursionlimit())
Javascript
let count = 0;
const counter() {
count++;
counter();
}
counter();
我也想知道C的情况。但我的主要问题是,这个数字是否是由语言设置的数字,或者这个数字是否完全取决于设备的内存大小。
它取决于很多因素,比如操作系统、设备和RAM的数量。在许多编译过的语言中,操作系统允许你扩展堆栈,直到操作系统决定不再给你。在许多嵌入式设备中,黑客故意将堆栈扩展到超出预期的范围,以侵入设备。