java - 为什么这段代码在java中会耗尽内存,而在c中却不会?

标签 java c programming-languages

在 java 或 c 中我都可以写一个类似

的函数
fun(){
  fun();
}

(忽略语法细节)

在 Java 中,我得到 OutOfMemory 异常,但在 C(可能还有一些其他语言)中,它似乎永远运行,就好像它是一个无限循环。为什么我在这里也没有出现 OutOfMemory 错误?

最佳答案

由于您的函数是 tail recursion 的示例,那么很可能是 C 编译器将递归优化为迭代,导致它无限循环而不会崩溃。

关于java - 为什么这段代码在java中会耗尽内存,而在c中却不会?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2291261/

相关文章:

重写修改后的 goto 语义的算法

java - 如何使用java库中的内置方法将十进制转换为二进制?

java - 解码对象数组和数组

c - 这是空操作还是其他什么?

programming-languages - 如果我已经开始使用 PowerShell,要学习什么(脚本)语言?

function - "call-by-value"的不同含义有关联吗?

java - 默认情况下,实体是否缓存在 jpa 中?

java - 从 JSON 文件中提取文本

c - 查找字符在字符串中的位置时遇到问题

c++ - 我们可以对内存分配进行单元测试吗?