Closed. This question is opinion-based。它当前不接受答案。












想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。

6年前关闭。



Improve this question





WCHAR bitmapPathBuffer[512]

可以分配堆栈吗?还是最好使用堆来达到此大小?当最好从堆栈移到堆栈时,合理的指示尺寸是多少...所有人都说“是必需的”,但我们的大脑需要定向的某些限制。

最佳答案

您可能要检查系统的默认堆栈大小,并考虑应用程序进行递归使用的任何方法,以达到某个合理的阈值。

无论如何,对于典型的台式机,我想将〜100kb放在栈上是合理的,因为在没有任何异常考虑的情况下不会递归调用该函数(在看到下面的Windows限制后,我不得不将其向下修改)。在特定的系统上,您也许可以或多或少地达到一个数量级,但是大约在这一点上,您将开始关心检查系统限制。

如果发现您正在许多函数中执行此操作,则最好仔细考虑这些函数是否可以相互调用,或者只是动态分配(最好是通过使用vectorstring等进行隐式分配),而不用担心它。

100kb准则基于these default stack size numbers ripped from the 'net:

platform    default size    # bits  # digits
    ===============================================================
SunOS/Solaris   8172K bytes <=39875 <=12003 (Shared Version)
Linux       8172K bytes <=62407 <=18786
Windows     1024K bytes <=10581 <=3185  (Release Version)
cygwin      2048K bytes <=3630  <=1092

08-06 13:30