gpt4 book ai didi

delphi - "IMAGE_FILE_LARGE_ADDRESS_AWARE"是否应该在Delphi6中工作才能有效避免EOutOfMemory错误?

转载 作者:行者123 更新时间:2023-12-03 18:13:07 26 4
gpt4 key购买 nike

我从这里的其他帖子了解到“IMAGE_FILE_LARGE_ADDRESS_AWARE”可能会有效地扩展内存可用性,例如德尔福 2007。

我无法在 Delphi6 中使用它,是否确实如此,或者它应该起作用吗?或者是否有其他命令可以执行相同的操作?

如果没有,我可能需要迁移到更高版本的 Delphi。那么,有没有人知道最新版本的 Delphi 是什么,它可以轻松地让我迁移我现有的代码(理想情况下,我现有的代码,这是相当简单的 Turbo Pascal 类型的代码,可以按原样工作)并且支持“IMAGE_FILE_LARGE_ADDRESS_AWARE”扩展内存的“技巧”?

非常感谢!

雷姆科

最佳答案

您可以将 IMAGE_FILE_LARGE_ADDRESS_AWARE PE 标记应用于 Delphi 6 应用程序,但您必须注意以下问题:

  • Delphi 6 的默认内存管理器 Borland 内存管理器不支持地址超过 2GB 的内存分配。您必须用支持大地址的内存管理器替换内存管理器。例如 FastMM。
  • 您的代码很可能包含需要找到并修复的指针截断错误。
  • 这同样适用于您使用的任何第三方软件。这包括 Borland RTL 和 VCL 库。我没有遇到这些库的很多问题,但可能是您的程序使用了具有指针截断错误的运行时库的不同部分。
  • 为了在大地址条件下对您的程序进行压力测试,您应该打开top down memory allocation。 .如果您在自上而下的内存分配模式下运行时必须禁用反恶意软件(或其他系统级软件),请不要感到惊讶。这种类型的软件在自上而下的内存分配模式下运行是出了名的糟糕。
  • 最后,值得指出的是大地址感知并不能解决所有的内存不足问题。它所做的只是打开 32 位地址空间的上半部分。您的程序可能需要比这更多的地址空间。在这种情况下,您需要重新设计您的程序,或者转向 64 位编译器。

关于delphi - "IMAGE_FILE_LARGE_ADDRESS_AWARE"是否应该在Delphi6中工作才能有效避免EOutOfMemory错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35870601/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com