【问题标题】:Is the call stack frame limit dependent on your ram or the language?调用堆栈帧限制是否取决于您的 ram 或语言?
【发布时间】:2021-01-06 09:42:22
【问题描述】:

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

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

Python

import sys
print(sys.getrecursionlimit())

Javascript

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

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

【问题讨论】:

  • 这通常不是编程语言的一个方面。你的意思是语言实现?我认为这是一个需要做出的决定,所以它必须由编写实现的人做出,但也会受到机器上可用资源的限制。

标签: javascript python c callstack


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2014-10-04
    • 2020-07-30
    • 2019-06-01
    • 2013-05-17
    • 2013-11-04
    • 2010-10-10
    • 1970-01-01
    • 2013-10-12
    • 2021-06-28
    相关资源
    最近更新 更多