请看一下这段代码:
#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 时,操作系统应该说该进程正在使用超过 500MB 的内存。但显然,它不是那样工作的。我错过了什么?操作系统使用什么技巧,我应该阅读什么?
提前感谢您提供任何线索。