我需要分配一个大的多维数组作为 char a[x][32][y]
,而x*32*y大约是6~12G。 (x,y 在运行时确定。)
我想出一个办法就是做char *a=malloc(x*32*y)
,并使用 *(a+32*y*i+y*j+k)
对于 a[i][j][k]
.
然而,与a[i][j][k]
相比,这看起来不太方便。 .
有没有更好的办法?
添加:
是a[x][32][datlen]
, 其中datlen
在运行时确定并且x
考虑到内存设置。
数组中的全部数据都是新的。我有 16 或 32GB 内存的数学来运行它。
最佳答案
不正确:在引用动态分配的内存时,您仍然应该能够使用 [i][j][k] 语法。
正确:使用宏至少可以使工作更轻松
#define A(i,j,k) *(a+32*y*i+y*j+k)
A(1,2,3) would then do the right thing.
关于c - 如何在 C 中操作动态多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6077786/