当我在 Haskell 中编写递归函数时出现了一个问题;任何语言(或仅 Haskell)的任何调用堆栈是否会在特定点耗尽内存?
谢谢:)
最佳答案
你的内存量是有限的,如果调用堆栈上的每个帧都占用非零字节数(尾调用优化使这有点复杂),你必须能够通过足够深的递归耗尽资源。基本逻辑。
也就是说,你能走多深取决于堆栈的实现。如果堆栈是在普通中断堆栈(也称为 C 堆栈,因为它与该语言相关联)中实现的,那么可用空间非常有限,足以让小帧变得非常深,但当帧大小时增加时真的很有限(有更多更大类型的变量)。并非所有语言都使用中断堆栈,而是将它们的堆栈定位在堆空间(更大)中。
关于memory - 调用堆栈会耗尽内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11253360/