【发布时间】:2017-11-29 17:36:05
【问题描述】:
我正在处理 malloc 调用,我想知道我的操作系统可以给我多少内存。我试过了:
int main() {
char *String = 0;
String = malloc (100000000000000); // This is 10^14
if (String)
printf ("Alloc success !\n");
else
printf ("Alloc failed !\n");
return 0;
}
而且...它奏效了。 10^14 大约是 18 TB。笔记本电脑甚至有可能拥有如此多的内存吗? 如果这不可能,如何解释?
【问题讨论】:
-
是虚拟内存,不是真实内存。
-
只是为了实验,尝试编写它。
-
谷歌“乐观内存分配”。
-
这意味着当您尝试使用该空间时,您将面临崩溃。出于某种原因,Linux 认为让您分配比程序实际拥有的空间更多的空间很有趣。
-
操作系统可能会通过虚拟内存来处理分配请求,但实际上并没有物理内存支持。意味着,您的
malloc()可能会成功,但实际上 using 内存会失败。