增加32位应用程序内存地址空间,解决“Out of memory”问题
使32 位应用程序能够在64位Windows 访问最大 4GB 内存空间
在应用程序的 .dpr 文件中添加编译指令 {$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE}
。
uses Winapi.Windows;
{$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE}
32位应用程序的地址空间的默认大小为 2GB,但可以在 32 位 Windows (支持的 Windows 版本 )上增加到 3GB,在 64 位 Windows 上增加到 4GB。地址空间总是有些碎片化,因此对大于 1GB 的单个连续块的
GetMem
请求不太可能成功。
代码
program Project1;
uses
Vcl.Forms,
Winapi.Windows,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
{$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
D7中Windows
单元中没有定义IMAGE_FILE_LARGE_ADDRESS_AWARE
常量,需要先定义常量
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
const
IMAGE_FILE_LARGE_ADDRESS_AWARE = $0020;
{$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.