使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.