【发布时间】:2014-09-11 23:08:02
【问题描述】:
问题说明了一切。尝试在链接器选项中增加堆栈大小会产生错误:
最大堆栈大小必须是介于 65536 和 16777216 之间的整数。
这个 16MB 的限制是 Delphi 编译器的基本限制,还是 IDE 强加的任意限制?有没有其他方法可以增加这个值?
注意(期待cmets...):
- 需要更大的堆栈是由于用作局部变量的大量静态数组类型
- 我知道这样做是糟糕设计的表现
- 这是一个大型遗留应用程序,我不负责其设计和维护。
- 重构为动态数组有效,但会导致 50% 的性能损失。
- 其他重构是可能的 - 可能需要数周的工作。这很可能最终成为一个副项目。
- 与此同时,现在需要功能,并且可以轻松解决更大的堆栈问题。
- 是的,我真的,真的知道这是一件很糟糕的事情。
【问题讨论】:
-
您尝试过 PXXXArray/GetMem 方法吗?是否可以将最大的局部数组(从非递归过程)移动到全局变量(堆)作为临时解决方案?
-
@MBo 可能,但涉及数百个函数。需要明确的是,我很确定我对如何将其重构为更明智的设计有(几个)好主意。这只是时间和精力的问题。
标签: delphi delphi-xe2 stack-size