如何让笔记本电脑拥有如此多的内存?

时间:2017-06-26 19:20:21

标签: c memory malloc

我在搞乱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太字节。笔记本电脑是否有可能拥有如此多的内存? 如果不可能,怎么解释呢?

1 个答案:

答案 0 :(得分:7)

64位操作系统可以生成大量的地址空间。什么会限制它?

仅在需要时才使用物理内存(RAM)备份地址空间。

所有LiveData调用必须返回一个地址。该地址在您尝试从中读取或写入之前无需参考物理内存。

这种行为的缺点是malloc通话失败通常是实施的唯一机会,很好地告诉你,你不能拥有你要求的记忆。在此之后,当系统尝试使用的内存超过系统可以返回的内存时,系统可以做的就是终止进程。

您的实现几乎肯定会为您提供一些方法来在系统级别,每个进程或两者中控制此行为。