我弄乱了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吨。笔记本电脑甚至有可能拥有如此多的内存吗?如果不可能,该如何解释?
64位OS可以生成大量的地址空间。什么会限制它?
使用物理内存(RAM(的地址空间的支持。
malloc
呼叫要做的就是返回地址。该地址在尝试从中读取或写入它之前不必参考物理内存。
这种行为的缺点是,失败malloc
调用通常是实现的唯一机会告诉您您无法拥有所需的内存。之后,关于系统可以做的所有系统都可以在尝试使用更多的内存时终止该过程。
您的实现几乎可以肯定,您可以在系统级别,每个过程或两者兼而有之控制此行为。