关于课后练习s1e37第一问的疑问
问题如下小甲鱼给出的参考答案如下
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
void *block;
int i, count;
size_t maximum = 0;
size_t blocksize[] = {1024 * 1024, 1024, 1};
// 下面从大到小依次尝试
// 先尝试以1024 * 1024为扩大粒度去申请内存空间
// 当malloc返回NULL时,将扩大的粒度缩小为1024继续尝试
// 最终精确到1个字节的粒度扩大maximum的尺寸
for (i = 0; i < 3; i++)
{
for (count = 1; ;count++)
{
block = malloc(maximum + blocksize * count);
if (block)
{
maximum += blocksize * count;
free(block);
}
else
{
break;
}
}
}
printf("malloc在当前环境下申请到的最大空间是:%.2fGB\n", maximum * 1.0 / 1024 / 1024 / 1024);
return 0;
}
我的疑问是:为什么我虚拟机设置的内存只有1GB,malloc申请的最大内存却可以达到1.78GB
我也是,16G的内存却能申请到30G 执行 swapon 指令看看
有可能你开启了虚拟内存
酱油王 发表于 2021-7-18 11:25
我也是,16G的内存却能申请到30G
执行 swapon 指令看看
有可能你开启了虚拟内存
页:
[1]