Malloc无法在Windows上分配1 GiB的内存

时间:2015-08-05 06:03:23

标签: c++ windows visual-c++ malloc

我试图在Windows上使用malloc()分配1 GiB的内存,但它失败了。我知道malloc的不确定性。分配1 GiB内存的最佳解决方案是什么?

2 个答案:

答案 0 :(得分:4)

如果您使用的是32位(x86)应用程序,则不太可能分配1 GB的连续内存块(当然也不能分配2GB)。至于为什么会发生这种情况,你应该看到附着在this blog post上的“为什么你的Windows游戏无法在2,147,352,576字节中运行”(Gamefest 2007)。

您应该将应用程序构建为x64本机(x64)应用程序。

您可以在Windows x64上启用/LARGEADDRESSAWARE并坚持使用32位应用程序,但它有许多怪癖,可能会限制您可以使用的第三方支持库类型。更好的解决方案是尽可能使用x64 native。

答案 1 :(得分:1)

使用/LARGEADDRESSAWARE标志告诉Windows您没有使用地址做有趣的事情。这可以在Win64上解锁额外的2GB地址空间。