memory - 调用堆栈会耗尽内存吗?

标签 memory haskell memory-management recursion callstack

当我在 Haskell 中编写递归函数时出现了一个问题;任何语言(或仅 Haskell)的任何调用堆栈是否会在特定点耗尽内存?

谢谢:)

最佳答案

你的内存量是有限的,如果调用堆栈上的每个帧都占用非零字节数(尾调用优化使这有点复杂),你必须能够通过足够深的递归耗尽资源。基本逻辑。

也就是说,你能走多深取决于堆栈的实现。如果堆栈是在普通中断堆栈(也称为 C 堆栈,因为它与该语言相关联)中实现的,那么可用空间非常有限,足以让小帧变得非常深,但当帧大小时增加时真的很有限(有更多更大类型的变量)。并非所有语言都使用中断堆栈,而是将它们的堆栈定位在堆空间(更大)中。

关于memory - 调用堆栈会耗尽内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11253360/

相关文章:

java - 没有状态字段的java对象如何存储在JVM中?

iOS 快速 : Deint a child ViewController

Python:对子字符串列表进行排序,而不创建每个子字符串的单独副本

c++ - 将数据从未对齐结构的数组移动到 C++ 中的对齐数组

Windows 程序有很大的 native 堆,比所有分配都大得多

Haskell 二进制兼容性

c - 我是否了解此 malloc/free 组合的内存问题?

javascript - 什么在吞噬我的内存? (SAW、JS内存使用版)

haskell - 我可以将自定义包链接放入 stack.yaml 吗?

algorithm - 有序集和自然双射(组合物种)