如何检查在一个进程中可以使用地址空间的最大内存量

时间:2011-12-18 21:48:05

标签: windows winapi memory 32-bit

如果在32位可执行文件中没有给出LARGEADDRESSAWARE开关,则可以使用2GB内存(给予或接受)。当可执行文件的PE标志中存在交换机LARGEADDRESSAWARE时,此限制可以是(如果我错了,请纠正我):

  • 如果未使用/ 3GB开关启动32位Windows,则为2GB
  • 如果使用/ 3GB开关启动32位Windows,则为3GB
  • 如果进程在Windows 64位操作系统下作为32位进程运行,则
  • 几乎高达4GB。

我的问题是:如何确定此内存限制(使用和/或不使用LARGEADDRESSAWARE标志)?作为旁注:上面列出的可能性是正确的吗?

注意:我对进程使用的内存量不感兴趣,也不是因为外部效应造成的限制,只是在理想情况下我可以分配的最大内存量。

1 个答案:

答案 0 :(得分:3)

我认为最好的方法是致电GetSystemInfo并根据lpMinimumApplicationAddresslpMaximumApplicationAddress计算出您需要的内容。您可以简单地从后者中减去前者以获得可用的总可寻址内存空间。

各种可能性的三个要点是正确的。