"IMAGE_FILE_LARGE_ADDRESS_AWARE"应该在Delphi6中工作以有效避免EOutOfMemory错误吗?

Rem*_*ens 2 memory delphi

我从其他帖子中了解到,"IMAGE_FILE_LARGE_ADDRESS_AWARE"可能会有效地扩展内存可用性,例如Delphi 2007.

我不认为这在Delphi6中工作,确实是这样,还是应该有效?或者是否有另一个命令执行相同的操作?

如果没有,我可能需要迁移到更高版本的Delphi.然后,有没有人知道最新版本的Delphi是什么,这将很容易让我迁移我现有的代码(理想情况下,我现有的代码,这是相当简单的Turbo Pascal类型代码,将按原样工作)并将支持"IMAGE_FILE_LARGE_ADDRESS_AWARE"'技巧'扩展内存?

非常感谢!

REMCO

Dav*_*nan 8

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

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