此程序如何管理分配这么多的内存?

问题描述 投票:2回答:1

我很好奇我可以在笔记本电脑上分配多少内存,因此我运行了简约程序:

#include<stdio.h>
#include<stdlib.h>

int main() {
    int Gb = 0;
    while ( malloc(1<<30) ){
            ++Gb;
            printf("Now allocated %d Gb in total\n", Gb);
    }
}

它应该在每一步分配1Gb内存,直到malloc失败(NULL),从而结束循环。另一方面,我获得的输出以:

结尾

现在总共分配了131063 Gb

并不能绝对正确(我有8Gb RAM,没有交换分区)。我可以问一下,我在误解什么?

编辑:我忘了提,我正在使用Linux。

c memory memory-management malloc
1个回答
2
投票

虚拟内存的奇迹。直到您以某种方式实际对其进行初始化之前,内存不需要占用任何RAM。您会从

© www.soinside.com 2019 - 2024. All rights reserved.