C++ 64位Windows上应用程序的最大可用内存是多少

C++ 64位Windows上应用程序的最大可用内存是多少,c++,.net,windows,memory,C++,.net,Windows,Memory,我一直从我的用户那里得到这个问题,不幸的是我没有找到关于x64的好链接(x86是另一个故事) 64位Windows上应用程序的最大可用内存是多少: C++应用程序 .Net应用程序 使用C++库的.NET应用程序 应用程序正在/2012服务器上运行 应用程序正在Windows 7/8上运行 从理论上讲,如果地址被认为是未签名的,那么总容量将超过180亿(2^64或180亿)字节或180亿GB。如果你限制自己,考虑一个有符号的64位整数,那么你会看到其中的一半。哦,别忘了减去为硬件保留的内存,比如

我一直从我的用户那里得到这个问题,不幸的是我没有找到关于x64的好链接(x86是另一个故事)

64位Windows上应用程序的最大可用内存是多少:

  • C++应用程序
  • .Net应用程序
  • 使用C++库的.NET应用程序
  • 应用程序正在/2012服务器上运行
  • 应用程序正在Windows 7/8上运行

  • 从理论上讲,如果地址被认为是未签名的,那么总容量将超过180亿(2^64或180亿)字节或180亿GB。如果你限制自己,考虑一个有符号的64位整数,那么你会看到其中的一半。哦,别忘了减去为硬件保留的内存,比如视频ram、总线地址空间等等

    但即使是这些数字也不一定是最大值(至少在理论上是这样),因为还有一些额外的技巧可以实现(比如使用物理地址扩展在32位上使用超过2GB)

    因此,本质上是一个简短的回答:64位允许您寻址并使用您的钱可以购买的所有内存


    不幸的是,最有可能的硬件和软件限制要低得多,例如主板可使用的最大内存量(取决于主板的使用年限,目前通常为8或16 GB,有时为32 GB)

    尽可能多的内存,因为你有一段时间…超过你将永远需要的,或对页面文件的大小限制。什么是…-你发现了什么?例如,一个进程的总虚拟内存为16 Tb。8 Tb。请参阅并@ta.speot.is:“嘿,约翰,你忘了在析构函数中删除另一个内容!”——“不,别担心,我们是64位的。”谢谢,你给我的链接正是我找到的链接。说实话,我希望微软能给我一些额外的限制。除了上面提到的限制之外,没有任何真正的理由去限制更多的限制。旧的32位程序被限制在2GB而不是4GB(正如您对32位地址空间所期望的那样)的问题是它们最初使用有符号整数的遗留问题。如果您检查链接,您就会知道任何windows系统可用的最大ram量是2Tb,远低于理论上的最大ram量。