加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 09:26:19 所属栏目:大数据 来源:网络整理
导读:问题就是这一切.尝试在链接器选项中增加堆栈大小会生成错误: Maximum Stack Size must be an integer between 65536 and 16777216. 这个16MB的限制是Delphi编译器的一个基本限制,还是IDE强加的任意限制?还有另一种方法来增加这个价值吗? 注意(预期评论…
问题就是这一切.尝试在链接器选项中增加堆栈大小会生成错误:

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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读