c - 如何在 C 中操作动态多维数组

标签 c dynamic multidimensional-array

我需要分配一个大的多维数组作为 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/

相关文章:

c++ - 声明后在 C++ vector 中分配元素

c++ - 将点的二维数组转换为一维数组

c# - 追加两个多维数组对象 [,]

jquery - 使用 jQuery 将行添加到表的主体

javascript - 将包含对象的 3D 数组展平为 2D,通过其参数删除重复的对象

objective-c - DecimalNumberByAdding 如何工作?

c - 为什么函数内部的重新分配无法使用英特尔编译器执行?

c++ - C++中的异或大数

c - 由于 cscanf() 和 cprintf() ,程序无法编译

javascript - 如何使用 JavaScript 构建动态函数?