我有一个calloc的调用,要求分配1个略大于1 GB的元素。此调用返回了NULL,并且检查errno会显示内存不足错误。然而,在测试期间,我拥有近4 GB的可用物理内存,更不用说可用虚拟内存了。
经过研究,我认为calloc失败的原因可能是没有足够的连续内存。但是,如果我有4GB的可用内存,应该很容易获得约1GB的连续内存。是否有一种方法来检查连续内存的可用性?如果这是问题所在,是否有一种简单的方法来“碎片整理”内存?
还是这与已分配内存的块大小有关,以致实际上它正在尝试分配比可用内存更多的内存?我确定失败原因的选项有哪些?我成功分配这么多内存的选项有哪些?
我使用本机Windows系统,拥有12GB的内存。接下来,我将尝试在虚拟机中运行,并为虚拟机提供几个GB的内存,以检查虚拟机是否可以透明地访问足够的连续内存。如果今天完成了,我会在这里发布结果。
经过研究,我认为calloc失败的原因可能是没有足够的连续内存。但是,如果我有4GB的可用内存,应该很容易获得约1GB的连续内存。是否有一种方法来检查连续内存的可用性?如果这是问题所在,是否有一种简单的方法来“碎片整理”内存?
还是这与已分配内存的块大小有关,以致实际上它正在尝试分配比可用内存更多的内存?我确定失败原因的选项有哪些?我成功分配这么多内存的选项有哪些?
我使用本机Windows系统,拥有12GB的内存。接下来,我将尝试在虚拟机中运行,并为虚拟机提供几个GB的内存,以检查虚拟机是否可以透明地访问足够的连续内存。如果今天完成了,我会在这里发布结果。