2011-04-04 62 views
2

如何分配16GB内存的大量内存?请提供一个简单的C/C++程序作为例子。Hello world - 什么是使用16GB内存的简单程序?

例如

main() 
{ 
    // (10 gigabytes)/(4 bytes) = 2 684 354 560 
    int *hugearray = malloc(2684354560 * sizeof(int)); 
} 

...显然不起作用。

+0

它为什么不起作用? – Philip 2011-04-04 09:04:35

+2

除了菲利普的问题之外,您还关注哪些操作系统,以及您是否处于32位或64位模式,因为在32位模式下,您无法处理更多的2^32 = 4GB。 – DarkDust 2011-04-04 09:09:13

+0

您不应该像这样硬编码值 - 您可以改为编写“10 * 1024 * 1024 * 1024”。 – sharptooth 2011-04-04 10:05:58

回答

7

malloc()确实分配了内存,但是大多数操作系统只会给你一个虚拟地址空间,直到你真正尝试读取或写入该内存中,此时他们将开始分配物理内存或交换内存。你只需要循环写入一些垃圾值到内存中。

+4

对memset()的简单调用应该为他做到这一点。 – 2011-04-04 09:09:37

+0

@Tim Post:可以这么做,特别是如果使用非0值(我有一个模糊的回忆,因为某些操作系统足够聪明,可以在换出全0页时撤消RAM /交换分配,但也许我只是阅读关于它的一些讨论,而不是关于它的实际系统)。 – 2011-04-04 09:16:44

相关问题