我有一个使用超过2GB虚拟内存的对象,但Delphi只能管理2GB。我正在考虑创建多个对象并将它们分组,然后以某种方式使用Windows wow64方法并使用64位Windows。或者只需将内存管理器升级到4GB并围绕Int64构建它。有效地,我需要以Int64为基础对象使用TStream,而不是整数。
我有一个使用超过2GB虚拟内存的对象,但Delphi只能管理2GB。我正在考虑创建多个对象并将它们分组,然后以某种方式使用Windows wow64方法并使用64位Windows。或者只需将内存管理器升级到4GB并围绕Int64构建它。有效地,我需要以Int64为基础对象使用TStream,而不是整数。
Lexdean,你的意思是:
实际上我需要TStream作为基对象,使用Int64而不是整数
那么,你很幸运(两次),因为:
但是,如果我要回答标题中的问题:
如何编写一个内存管理器,将4吉字节映射到Delphi
没有办法使用32位编译器做到这一点。加入请求64位Delphi编译器的人群吧!
拥有一个单独的2GB对象并不是一个好主意。如果内存被分割,即使有足够的空闲内存,你也无法分配一个这么大的对象。我建议您尝试使用一系列较小的对象。
(我记得在Turbo Pascal(Delphi的前身)中,变量大小不能超过64KB...哦,那个时代... ;))
{$SetPeFlags IMAGE_FILE_LARGE_ADDRESS_AWARE}
,您可以更充分地利用32位地址空间。它会在PE头中设置一个标志,让Windows知道它可以为其分配超过2GB的虚拟内存。