这非常依赖于OS /计算机。
在大多数操作系统中,都不分配RAM。它们都分配VM空间。它们使一定范围的进程虚拟内存有效使用。通常,操作系统会在第一次写入时稍后分配RAM。在此之前,这些分配不会使用RAM(除了将它们列为有效VM空间的页表之外)。
如果要分配物理RAM,则必须使每个页面(
sysconf(_SC_PAGESIZE)使您的系统页面大小)变脏。
在Linux中,您可以在中查看包含所有详细信息的VM映射
/proc/self/smaps。
Rss是该映射的驻留集(RAM中驻留了多少),其他所有脏的东西都将被交换掉。所有非脏内存将可供使用,但在那之前将不存在。
您可以使用以下方法使所有页面变脏
size_t mem_length;char (*my_memory)[sysconf(_SC_PAGESIZE)] = mmap( NULL , mem_length , PROT_READ | PROT_WRITE , MAP_PRIVATE | MAP_ANonYMOUS , -1 , 0 );int i;for (i = 0; i * sizeof(*my_memory) < mem_length; i++) { my_memory[i][0] = 1;}在某些实现中,也可以通过将
MAP_POPULATE标志传递给来实现
mmap,但是(取决于您的系统)如果尝试映射更多内容而没有可用的RAM
mmap,
ENOMEM则可能会失败。



