微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

delphi – 有没有办法将默认堆栈大小增加到16777216字节以外?

问题就是这一切.尝试在链接器选项中增加堆栈大小会生成错误

Maximum Stack Size must be an integer between 65536 and 16777216.

这个16MB的限制是Delphi编译器的一个基本限制,还是IDE强加的任意限制?还有另一种方法增加这个价值吗?

注意(预期评论……):

>需要更大的堆栈是由于巨大的静态数组类型用作局部变量
>我知道这样做的必要性是可怕设计的症状
>这是一个庞大的遗留应用程序,其设计和维护我不负责.
>重构到动态数组可以工作,但会导致50%的性能损失.
>其他重构是可能的 – 可能是数周的工作.这可能最终成为一个侧面项目.
>与此同时,现在需要功能,更大的堆栈将是一个简单的解决方案.
>是的,我真的,真的知道这是一件坏事,坏事.

解决方法

您可以使用{$MAXSTACKSIZE}(或{$M minstacksize maxstacksize}编译器指令将其增加到2147483647.请注意,这与{$M}的用法不同于用于表示生成的{$M / – } RTTI课程.

XE6 docwiki(它也适用于以前的版本):

The $M directive specifies an application’s stack allocation parameters. minstacksize must be an integer number between 1024 and 2147483647 that specifies the minimum size of an application’s stack,and maxstacksize must be an integer number between minstacksize and 2147483647 that specifies the maximum size of an application’s stack.

If there is not enough memory available to satisfy an application’s minimum stack requirement,Windows will report an error upon attempting to start the application.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐