gpt4 book ai didi

java - 函数调用多少次会导致栈溢出

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:22:19 26 4
gpt4 key购买 nike

你好 android/Java 开发者,

当一个函数调用一个函数并且该函数调用另一个函数等等时,有多少次调用(堆栈长度)会让我进入堆栈溢出?有一般的经验法则吗?

我问的原因是因为我现在的 5 人纸牌游戏效率更高(设计明智)

解决方案一:

for(int i=0;i<100;i++){
p1.play();
p2.play();
p3.play();
p4.play();
}

解决方案 2:

   p1.play();    //where p1.play() calls p2.play() and so on until p4 calls p1 again.   
// this will go on for 100 times

我更喜欢解决方案 2,所以如果发生崩溃,我可以看到从 i=0 的 p1 到 i=100 的 p4 的所有函数调用

但是对于解决方案 1,堆栈要短得多,但是当发生崩溃时,我会在循环的开头看到发生崩溃的被调用函数 play()

你有什么建议?我知道这是 1 个问题中的 2 个问题,但它们非常相关

谢谢大家

最佳答案

根据我的经验,Java 中的堆栈溢出几乎总是由编程错误引起。查看典型尺寸 here .

现在,您的第二个解决方案是,IMO,非常难看...几乎是一个编程错误。假设 N=100 是(某种程度上)你的游戏持续时间,内存消耗(堆栈大小)随之增加听起来是错误的。我根本不喜欢那个解决方案。

when there is a crash I will see on the beginning of the loops a the called function play() where crash happened

我看不到真正的优势。为什么不放置一个 try catch block ,以便在发生崩溃时可以打印出迭代次数?

关于java - 函数调用多少次会导致栈溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12230474/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com