【问题标题】:Max size of function stack in C (gcc)C(gcc)中函数堆栈的最大大小
【发布时间】:2009-10-11 05:24:00
【问题描述】:

我想知道 gcc C 中允许的(递归)函数调用的最大数量是多少。我有一个程序可以处理 400000 个函数调用的堆栈深度,每个函数调用的大小约为 200 字节(大约 80 MB)。如何增加最大深度?

【问题讨论】:

  • 您确定要更深入吗?我认为这是很多递归。你可以尝试让它迭代。
  • 我正在为 DP 做备忘录。它是 3 x 3 矩阵的问题,将一个配置转换为另一个配置。我不能让它迭代。
  • @aditya:所有递归算法都可以迭代;这通常很难做到,你可能不知道该怎么做。

标签: c


【解决方案1】:

堆栈限制不是由编译器强加的,而是由操作系统强加的。在 Unix 上,你可以尝试使用 ulimit(1) 来增加它。

【讨论】:

    【解决方案2】:

    我建议将例程重写为迭代算法。虽然很重要,但转换算法应该很简单,并且会让您不必处理这些资源限制(我猜,这些限制会因架构、平台、计算机细节等而有很大差异)

    另外,请注意:所有递归算法can be written 迭代。

    【讨论】:

    • 我正在为 DP 做备忘录。它是 3 x 3 矩阵的问题,将一个配置转换为另一个配置。进行迭代很困难。
    猜你喜欢
    • 2015-02-13
    • 2010-12-22
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    • 2011-08-01
    • 2019-05-04
    相关资源
    最近更新 更多