【编程小白】用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
电脑内存是8GB
为什么算出来可以分配有131063GB啊,这个我有点不理解,是我代码写错了么?
回答
可以看看这里有相关讨论,https://stackoverflow.com/que...
简单来说os分配给你的虚拟内存而不是真实内存,同时os采用延迟初始化策略,分配给你的虚拟内存是要到用的那一刻才占用真实内存。
以上是 【编程小白】用C语言测试电脑可分配的最大内存 的全部内容, 来源链接: utcz.com/a/65053.html