c - 如何在 C++ 中分配非常大的字段

标签 c visual-c++ malloc

我有一个问题。我需要分配几个具有数十亿个浮点元素的非常大的字段。

目前我正在使用:

float ****spaceE;
int x,y,z;
x = y = z = 100;

spaceE = (float****)malloc(x*sizeof(int));
for (int i=0; i<x; i++)
{
    spaceE[i] = (float***)malloc(y*sizeof(int));
    for(int j=0; j<y; j++)
    {
        spaceE[i][j] = (float**)malloc(z*sizeof(int));
        for(int k=0; k<z; k++)
        {
            spaceE[i][j][k] = (float*)malloc(size[3]*sizeof(float));
        }
    }
}

但它占用了超过 2GB 的内存,Windows 终止了它。我需要像这样的数组很少而且更大,有没有更好的方法来做到这一点?

最佳答案

您应该使用内存映射文件,我认为这将是一个很好的解决方案。 http://msdn.microsoft.com/en-us/library/dd997372.aspx

关于c - 如何在 C++ 中分配非常大的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8188711/

相关文章:

c - 如何将宽字符串文字与 PRId32、PRIu64 等连接起来?

qt - 使用 QMake 时是否可以延迟 DLL 加载?

c - malloc typedef 指针

c++ - 根据 valgrind,malloc 和 new 在整体成本中占有巨大份额。我怎样才能减少它?

C 结构体指针数组 vs 结构体指针 malloc

c - 向左旋转并向右旋转以使用 C 中的(带符号短)强制转换进行符号扩展

c - 泛型表达式的副作用

c - 仅用一个循环打印数组中 String 的最后一个单词

c - 根据输入的字符数循环打印错误消息

c++ - 在没有运行时的情况下构建 Windows C++ 库?