我强烈期望这最终会成为一个重复,但我似乎无法找到它。
我有一个C ++程序,我通常在64位MacOSX SnowLeopard上运行。
当我尝试在32位Windows 7上运行它时,内存不足。可能它真的需要太多内存,但我想确保我没有错过某种选项或其他允许我挤出最大可能堆大小的选项。
答案 0 :(得分:2)
32位进程有4GB的内存限制,但它的用户地址空间和内核地址空间为2GB。
有一个/ 3GB开关,因此您可以使用3GB作为用户空间,使用1 GB作为内核空间。要执行此操作,您需要通过boot.ini(Win 2000,XP,2003)或bcdedit实用程序(稍后是Win Vista)更改操作系统中的设置。此外,您需要让您的exe知道此开关将其与/LARGEADDRESSAWARE
标志相关联。您可以使用editbin实用程序(它随Windows SDK一起提供)来执行此操作。
除此之外,我担心您必须对应用程序的运行方式进行一些更改,以便它不会占用太多内存。
答案 1 :(得分:1)
根据this table,每个进程的限制应该是2GB或3GB,并且有一些注册表被篡改。我不认为这与以前版本的Windows有很大不同。我记得XP有限的可寻址内存为3GB。