【编程小白】用C语言测试电脑可分配的最大内存

代码如下

#include <stdio.h>

#include <stdlib.h>

int main(void) {

void * p;

int sum = 0;

while (p = malloc(1024*1024*1024)) {

sum++;

}

printf("可以分配的最大内存为%dGB\n",sum);

free(p);

return 0;

}

每次分配1个GB,sum的数字就加1
按理说这个代码也没问题啊,但是我计算出来的结果是这样的。

Test(3433,0x1000dedc0) malloc: can't allocate region

:*** mach_vm_map(size=1073741824, flags: 40000100) failed (error code=3)

Test(3433,0x1000dedc0) malloc: *** set a breakpoint in malloc_error_break to debug

可以分配的最大内存为131063GB

Program ended with exit code: 0

本人用的是MacBook Pro
【编程小白】用C语言测试电脑可分配的最大内存

电脑内存是8GB
为什么算出来可以分配有131063GB啊,这个我有点不理解,是我代码写错了么?

回答

可以看看这里有相关讨论,https://stackoverflow.com/que...

简单来说os分配给你的虚拟内存而不是真实内存,同时os采用延迟初始化策略,分配给你的虚拟内存是要到用的那一刻才占用真实内存。

以上是 【编程小白】用C语言测试电脑可分配的最大内存 的全部内容, 来源链接: utcz.com/a/65053.html

回到顶部