代码如下
#include <stdio.h>
#include <stdlib.h>
int main(void) {
void * p;
int sum = 0;
while (p = malloc(1024*1024*1024)) {
sum++;
}
printf("可以分配的最大内存为%dGB
",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啊,这个我有点不理解,是我代码写错了么?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…