【发布时间】:2016-05-15 08:51:29
【问题描述】:
我有一个相当大的递归函数(另外,我用 C 编写),虽然我毫不怀疑堆栈溢出发生的情况极不可能,但它仍然是可能的。我想知道的是您是否可以检测堆栈是否会在几次迭代内溢出,因此您可以在不使程序崩溃的情况下进行紧急停止。
【问题讨论】:
-
我不认为有一个可移植的解决方案,但如果你不关心可移植性,你可以使用内联汇编检查堆栈指针的值,如果堆栈指针出现紧急退出小于某个值。
-
您也可以简单地将递归深度限制为最大深度。
-
不完全重复,但相关:stackoverflow.com/questions/199747/…
-
最好的解决方案总是尽可能摆脱递归。递归只能作为解决问题的最后手段。
标签: c recursion stack overflow detection