我现在唯一能想到的就是用来getrlimit获取专用于您的进程的堆栈的最大大小。接下来要做的就是找到一种获取当前使用的堆栈大小的方法。我认为这getrusage是要走的路,但在查看了man-page 和 SO 上的几篇文章后,它似乎不再支持这个特定功能。所以你必须寻找另一种方法。我确实相信它Valgrind还会报告堆栈使用情况,因此研究其源代码和文档可能会很有用。
一旦您能够获得当前堆栈大小,您就可以测量
开始递归之前的初始状态(这样您就可以将其从计算中排除,因为它与递归本身没有任何关系)
单次迭代的变化
排除初始堆栈分配以及使用总堆栈大小和单个递归步骤所需的分配,您应该能够估算给定系统可以拥有的递归数量。我不确定它是否有效,而且即使准确,此类测量也高度依赖于您所使用的系统(毕竟堆栈与进程可以拥有的虚拟内存量密切相关)。