如何分配16GB内存的大量内存?请提供一个简单的C/C++程序作为例子。Hello world - 什么是使用16GB内存的简单程序?
例如
main()
{
// (10 gigabytes)/(4 bytes) = 2 684 354 560
int *hugearray = malloc(2684354560 * sizeof(int));
}
...显然不起作用。
如何分配16GB内存的大量内存?请提供一个简单的C/C++程序作为例子。Hello world - 什么是使用16GB内存的简单程序?
例如
main()
{
// (10 gigabytes)/(4 bytes) = 2 684 354 560
int *hugearray = malloc(2684354560 * sizeof(int));
}
...显然不起作用。
malloc()
确实分配了内存,但是大多数操作系统只会给你一个虚拟地址空间,直到你真正尝试读取或写入该内存中,此时他们将开始分配物理内存或交换内存。你只需要循环写入一些垃圾值到内存中。
对memset()的简单调用应该为他做到这一点。 – 2011-04-04 09:09:37
@Tim Post:可以这么做,特别是如果使用非0值(我有一个模糊的回忆,因为某些操作系统足够聪明,可以在换出全0页时撤消RAM /交换分配,但也许我只是阅读关于它的一些讨论,而不是关于它的实际系统)。 – 2011-04-04 09:16:44
它为什么不起作用? – Philip 2011-04-04 09:04:35
除了菲利普的问题之外,您还关注哪些操作系统,以及您是否处于32位或64位模式,因为在32位模式下,您无法处理更多的2^32 = 4GB。 – DarkDust 2011-04-04 09:09:13
您不应该像这样硬编码值 - 您可以改为编写“10 * 1024 * 1024 * 1024”。 – sharptooth 2011-04-04 10:05:58