我正在学习《计算机体系结构》中与虚拟内存有关的东西,这是本讲座中的一个示例,但是我不明白为什么我们可以“ malloc”这么多的内存。我的英语不太好,将不胜感激。
我在Ubuntu上测试了代码,下面列出了输出。
int G = 1024*1024*1024;
for (int n=0; ;n++) {
char *p = malloc(G*sizeof(char));
if (p==NULL) {
fprintf(stderr, "fail to allocate > %g TiByted\n", n/1000.0);
return 1;
}
}
///来源:加州大学伯克利分校的CS61C
这是我编译和执行的方式
$ gcc OutOfMemory.c
$ ./a.out
failed to allocate > 131 TiBytes