调用堆栈帧限制取决于您的ram或语言吗



我正在写一篇关于调用堆栈概念的文章,我想谈谈调用堆栈在不同语言中的局限性。

我知道有一些方法可以查看调用堆栈上可以有多少帧,例如:

Python

import sys
print(sys.getrecursionlimit())

Javascript

let count = 0;
const counter() {
count++;
counter();
}

counter();

我也想知道C的情况。但我的主要问题是,这个数字是否是由语言设置的数字,或者这个数字是否完全取决于设备的内存大小。

它取决于很多因素,比如操作系统、设备和RAM的数量。在许多编译过的语言中,操作系统允许你扩展堆栈,直到操作系统决定不再给你。在许多嵌入式设备中,黑客故意将堆栈扩展到超出预期的范围,以侵入设备。

最新更新