即使物理RAM小於3 GB,這個有趣的代碼也總是在Linux系統中分配3 GB的內存。爲什麼這種內存分配的怪異行爲
怎麼樣? (我在我的系統中的2.7 GB的RAM和該代碼分配3.054 MB內存!)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
void *ptr;
int n = 0;
while (1) {
// Allocate in 1 MB chunks
ptr = malloc(0x100000);
// Stop when we can't allocate any more
if (ptr == NULL)
break;
n++;
}
// How much did we get?
printf("malloced %d MB\n", n);
pause();
}
您是否啓用了交換文件/分區? – user2422531
@ user2422531:我有,但我禁用了交換,但仍然得到了相同的結果。 – Inquisitive
在OS下查找網絡上的虛擬內存。 – 0decimal0