0
通常,當程序因堆棧溢出而崩潰時,意味着存在遞歸調用而沒有正確的退出條件。但是有沒有其他方法來獲得堆棧溢出?沒有遞歸函數調用會發生堆棧溢出嗎?
通常,當程序因堆棧溢出而崩潰時,意味着存在遞歸調用而沒有正確的退出條件。但是有沒有其他方法來獲得堆棧溢出?沒有遞歸函數調用會發生堆棧溢出嗎?
如果你在堆棧上分配,是的,它可能發生取決於語言。例如,使用C99功能alloca
:它明確表示,該名男子頁:
做可能超過堆棧的界限,甚至進一步進入其他對象在內存中,ALLOCA()的分配不能確定這樣的錯誤。
可能重複http://stackoverflow.com/questions/1583490/without-using-recursion-how-can-a-stack-overflow-exception-be-thrown – zvisofer
理論上你可以只是有足夠的方法調用你堆棧溢出。但是,這將是一個可怕的程序設計的標誌! –