2013-11-27 38 views
0

Delphi/FastMM可以解决OS的规格吗? http://msdn.microsoft.com/en-us/library/windows/desktop/aa366778(v=vs.85).aspxDelphi XE2/64位目标地址可以1TB的内存?

我刚刚有一位客户问我,如果我的软件可以访问一个TB(Windows 2008服务器),让我想知道。

+0

如果无法寻址40位值的地址空间,那么在64位中不会占用大量的资源。 :)所以如果答案是“不”,我会打电话给德尔福使用术语虚假广告。 – cHao

+5

这听起来像是一个直接针对Embarcadero的问题,因为它涉及到他们产品的功能。但是,我会为您解决问题,并简单回答“是”。 64位Delphi中的指针本身是64位的。由于这超出了物理地址的限制,所以它应该很容易处理那么多的内存。 –

回答

6

德尔福发射64位指针的代码。这样的指针能够处理大于1TB的字节。任何限制都是由操作系统的虚拟内存设计和/或许可限制的,Delphi编译器不知道这些限制。在运行时,系统会强制执行内存限制,您的代码将受到这些限制。但是Delphi本身没有寻址限制。

同样,FastMM没有1TB限制的概念。当系统报告内存已耗尽时,FastMM将报告内存不足错误。

Delphi/FastMM可以解决与操作系统的 相同的规格吗?

是。


一边。使用Borland内存管理器的旧版32位Delphi版本与2GB-4GB范围内的地址不兼容。如果这样的Delphi代码在标记为大地址感知的进程中执行,则表现出这个问题。

我提到这是为了说明如何使用您的开发工具对操作系统进行限制。现在,64位Delphi没有这样的问题,但你问的问题是非常有效的。