有没有一种方法可以将默认堆栈大小增加到超过16777216字节?

J..*_*... 5 delphi stack-size delphi-xe2

问题说明了一切。尝试增加链接器选项中的堆栈大小会产生错误:

最大堆栈大小必须是65536和16777216之间的整数。

这16MB的限制是Delphi编译器的基本限制,还是IDE施加的任意限制?还有其他增加此值的方法吗?

注意(期待评论...):

  • 之所以需要更大的堆栈,是因为大量的静态数组类型用作局部变量
  • 我了解需要这样做是糟糕设计的征兆
  • 这是一个大型的遗留应用程序,我不负责其设计和维护。
  • 重构为动态数组是可行的,但是会导致50%的性能损失。
  • 其他重构也是可能的-可能需要数周的时间。这很可能会作为一个附带项目结束。
  • 同时,现在需要功能,并且较大的堆栈将很容易解决。
  • 是的,我真的非常知道这是一件坏事,一件坏事。

Ken*_*ite 4

{$MAXSTACKSIZE}您可以使用( 或编译器指令将其增加到 2147483647。请注意,这与用于指示类的 RTTI 生成的{$M minstacksize maxstacksize}用途不同。{$M}{$M+/-}

来自XE6 docwiki(它也适用于之前的版本):

$M 指令指定应用程序的堆栈分配参数。minstacksize 必须是 1024 到 2147483647 之间的整数,指定应用程序堆栈的最小大小,maxstacksize 必须是 minstacksize 到 2147483647 之间的整数,指定应用程序堆栈的最大大小。

如果没有足够的可用内存来满足应用程序的最低堆栈要求,Windows 将在尝试启动应用程序时报告错误。