このコードを見てください:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char* foo = (char*)malloc(500000000);
// when I uncomment stuff that's below then operating system
// admits that this program uses 500MB of memory. If I keep
// this commented, it claims that the program uses almost no
// memory at all. Why is it so?
/*
for (int i=0; i<500000000; i++)
{
foo[i] = (char)i;
}
*/
int bar; scanf("%d", &bar); // wait so I can see what's goin on
free(foo);
return 0;
}
私の直感は単純です。malloc呼び出しで500MBを割り当てると、OSはプロセスが500MBを超えるメモリを使用していると言うはずです。しかし、どうやら、それはそのようには機能しません。私は何が欠けていますか?OSはどのようなトリックを使用していますか、何について読む必要がありますか?
手がかりを事前にありがとう。