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

问题描述

我正在写有关调用堆栈的概念,我想用不同的语言来探讨调用堆栈的局限性。

我知道有很多方法可以查看调用堆栈中的帧数,例如:

Python

import sys
print(sys.getrecursionlimit())

JavaScript

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

我也想对C有所了解。但是我的主要问题是,这个数字是否是由语言设置的数字,或者该数字是否完全取决于设备的内存大小。

解决方法

这取决于很多因素,例如操作系统,设备和RAM数量。在许多编译语言中,操作系统使您可以扩展堆栈,直到OS决定不再需要它为止。在许多嵌入式设备中,黑客有意将堆栈扩展到超出预期的范围,以便闯入该设备。