提问人:m_here 提问时间:4/7/2023 最后编辑:m_here 更新时间:4/7/2023 访问量:76
“malloc”无法为大小为 30 亿的浮点数组分配内存
'malloc' is unable to allocate memory for a float array for size 3 billion
问:
我一直在尝试将一个 2-d 连续数组分配为:
float **objects;
long long len;
len = (*numObjs) * (*numCoords);
objects = (float **)malloc((*numObjs) * sizeof(float *));
assert(objects != NULL);
objects[0] = (float *)malloc(len * sizeof(float));
if (objects[0] == NULL) {
perror("malloc" );
abort();
}
for (i=1; i<(*numObjs); i++)
objects[i] = objects[i-1] + (*numCoords);
其中 和 .(*numObjs) = 500 million
(*numCoords) = 6
perror 显示的错误为:malloc: Cannot allocate memory
对于,它工作正常。但比这更大的是,它抛出了上述错误。(*numObjs) = 200 million
另请注意,我有大约 14 GB 的可用物理内存和巨大的可用交换空间。
答: 暂无答案
评论