指向3D指针数组的指针

Pointer to 3D Arrays of Pointer

本文关键字:指针 数组 指向 3D      更新时间:2023-10-16

我试图创建一个指针到一个充满指针的动态3D数组。我正在使用体素,所以假设t_cube是我的对象。

首先,我试着这样做:

t_cube* (*m_Array)[][][];

我想我可以这样做

m_Array = new t_cube[sizeX][sizeZ][sizeY];

编译失败。

接下来我试了这个:

t_cube *(m_Model[]); // This is my .h
{
    t_cube *model_Tempo[sizeX][sizeZ][sizeY]; // And this is in my class constructor.
    m_Model = model_Tempo;
}

又一次编译失败。

我希望这个例子能帮助你解决问题:

因为,我们处理的是三维数组的指针。所以,如果我用c++语法写它,它就像:
t_cube *array[x_size][y_size][z_size];

但是,您已经提到,它执行失败。现在,使用动态分配方法做同样的事情。

t_cube ****array;                // Since, it a pointer to the 3D Array
array = new t_cube ***[x_size];
for(int i=0; i<x_size; i++) {
    array[i] = new t_cube **[y_size];
    for(int j =0; j<y_size; j++) {
        array[i][j] = new t_cube *[z_size];
    }
}                                /*  I'm sure this will work */

你遇到麻烦的原因:

    大小的
  1. m_Array 可能是非常大的: x_size * y_size * z_size * sizeof (t_cube)
  2. 必须在本地(在函数内部)定义m_Array,这是导致程序故障的主要原因。