错误1错误C2148:数组的总大小不得超过0x7fffffff字节我在C中得到此Erorr

我想制作一个char[1 048 576][16 384][1024]和一个int [1 048 576][16 384]但我得到一个错误!

我想制作一个像excel一样大的3d数组!

谢谢你的帮助!。

要在C中“制作”一个数组,你需要使用malloc静态或动态地分配一些内存。 在任何情况下,arrays都将在您的计算机中物理映射,就像在RAM中一样。 所以你需要有足够的物理位置来“制造”它。

在您的情况下,您需要一个大小为char的数组:1048576 * 16384 * 1024 * sizeof(char)= 1048576 * 16384 MByte,字符大小为1个字节。

那太过分了。 你得到的错误与此有关。 它告诉您,您可以请求的最大大小是有符号整数的最大数量。 请参阅: int32的最大值是多少? 。 这是你想要分配的方式。

如果你看excel,单元格都是空的,并且在填充之前没有为它们保留内存。

除非该数组是全局变量,否则它将在堆栈上分配,其大小有限(通常,VC为1MB)。

应该使用malloc在堆上分配大对象。 然而,如此巨大的 (大约16TB)对象永远不会适合任何普通设备的存储器。 有可能你实际上并不需要所有的记忆。 你应该重写你的算法。