我需要calloc
1 个超过 1 GB 的元素。此调用返回NULL
,检查 errno 显示内存不足错误。但是,在测试期间,我有将近 4 GB 的空闲 RAM,更不用说可用的虚拟内存了。
在研究了这个问题之后,我唯一能想到的calloc
失败原因是我没有足够的连续内存可用。但是,在我看来,如果我有 4Gb 可用内存,那么拥有 ~= 1Gb 连续内存应该很容易。有没有办法检查连续的内存可用性?如果这是问题所在,是否有一种直接的方法来“整理”内存?
或者这是否与分配内存的块大小有关,因此它实际上试图分配比我可用的内存更多的内存?我有哪些选择来确定失败的原因?成功分配这么多内存的选择是什么?
我在具有 12Gb 内存的本机 Windows 系统上。接下来我将尝试在 VM 中运行,并给 VM 几 GB 的内存,并检查虚拟机是否可以非透明地访问足够的连续内存。如果我今天完成,我会在这里发布结果。