【发布时间】:2018-01-28 23:50:27
【问题描述】:
我正在尝试编写一个可以解析最终用户文件的库,用于将一些简单的用户生成的内容添加到项目中,并且我想尝试使该库尽可能灵活。我将递归用于“对象”的标记化过程,该过程通过四个函数链,但我与如何处理最终用户高兴嵌套对象的潜在情况相冲突。我知道我可以对程序可以递归的次数设置一个硬性限制,但我想让它尽可能灵活。有什么方法可以计算出这个进程可以执行的(最大 - 1)次,这样我就可以抢占堆栈溢出错误并返回一个错误或要处理的东西?
【问题讨论】:
-
任何递归都可以重写为迭代加显式堆栈。这样您就不受调用堆栈大小的限制,而仅受系统上可用内存的限制。
-
C++ 标准没有指定确定递归函数调用所需的可用堆栈空间的方法,也没有指定进程可用的堆栈空间量。
-
@IgorTandetnik 这听起来很有趣,也是一个不错的选择。链中的函数执行一些检查和一些这样的检查,并将信息返回到链中。您能否指出任何有关可能实现的教程或文章?
标签: c++ recursion memory stack-overflow