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

Jen*_*inx 5 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;
}
Run Code Online (Sandbox Code Playgroud)

而且......它奏效了.10 ^ 14大约是18太字节.笔记本电脑是否有可能拥有如此多的内存?如果那不可能,怎么解释呢?

Dav*_*rtz 7

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

仅在需要时才使用物理内存(RAM)支持地址空间.

所有的malloc电话都要做的是返回一个地址.在尝试从中读取或写入之前,该地址无需参考物理内存.

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

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