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

Is the call stack frame limit dependent on your ram or the language?

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

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

Python

import sys
print(sys.getrecursionlimit())

Javascript

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

我也想知道 C 的情况。但我的主要问题是这个数字是由语言设置的数字还是完全取决于设备有多少 ram。

这取决于很多因素,例如操作系统、设备和 RAM 容量。在许多编译语言中,操作系统允许您增加堆栈,直到 OS 决定不再提供给您。在许多嵌入式设备中,黑客故意将堆栈扩展到超出预期范围以侵入设备。