在程序中使用IMAGE_FILE_LARGE_ADDRESS_AWARE标志(要使用2GB以上的RAM)有什么副作用?
我在FastMM4上使用Delphi 7。
最佳答案
您需要确保不使用内置的内存管理器,而要使用可以支持> 2GB地址的设备。例如FastMM。
您的代码库中可能还有其他代码,通常是第三方代码,这会弄脏地址> 2GB的地址。我个人通过在64位Windows下运行并强制系统使用top-down memory allocation via a registry setting来处理此问题。
执行此操作时,您可能会在Windows中遇到一些错误。例如,Vista上的GetCursorPos的参数地址大于2GB时将失败。我通过为Windows.GetCursorPos修补通过GetCursorInfo的版本来解决此问题。此错误已在Windows 7中修复,但MS选择不将其反向移植到Vista。
我无法强调启用自上而下的内存分配对运行的重要性。