C++ C+中的三维全局数组+;

C++ C+中的三维全局数组+;,c++,pointers,memory-management,heap-memory,C++,Pointers,Memory Management,Heap Memory,我试图创建一个全局数组,该数组的大小来自命令行参数。到目前为止,我的代码如下所示: int*** Matrix; 后来,在一个函数中,我这样做: Matrix = new int**[2]; Matrix[0] = new int*[gridSize]; Matrix[1] = new int*[gridSize]; for (int i = 0; i<gridSize; ++i){ Matrix[0][i], Matrix[1][i] =

我试图创建一个全局数组,该数组的大小来自命令行参数。到目前为止,我的代码如下所示:

int*** Matrix;
后来,在一个函数中,我这样做:

Matrix = new int**[2];
    Matrix[0] = new int*[gridSize];
    Matrix[1] = new int*[gridSize];
    for (int i = 0; i<gridSize; ++i){
            Matrix[0][i], Matrix[1][i] = new int[gridSize];
    }
Matrix=newint**[2];
矩阵[0]=新整数*[gridSize];
矩阵[1]=新整数*[gridSize];

对于
c++
中的(inti=0;i),可以利用
STL

#include <vector>
using Array1D = std::vector<int>;
using Array2D = std::vector<Array1D>;
using Array3D = std::vector<Array2D>;

void resizeArray3D(Array3D &array3D, size_t size) {
    array3D = Array3D(size, Array2D(size, Array1D(size)));
}
#包括
使用Array1D=std::vector;
使用Array2D=std::vector;
使用Array3D=std::vector;
空洞大小Array3D(Array3D和Array3D,大小){
array3D=array3D(大小,Array2D(大小,array3D(大小)));
}

请注意,此版本的resize将删除所有以前的数据。

矩阵[0][i],矩阵[1][i]=…
并没有像你想象的那样做。另请参见。你应该真正考虑你的设计。避免全局变量,避免原始指针,使用适当的矩阵类,使用
std::vector
std::array
。其他一切都很可能迟早会导致混乱。