我试图在Windows上使用malloc()
分配1 GiB的内存,但它失败了。我知道malloc
的不确定性。分配1 GiB内存的最佳解决方案是什么?
答案 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地址空间。