我有一个问题。我需要分配几个具有数十亿个浮点元素的非常大的字段。
目前我正在使用:
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/