【问题标题】:3d Global array in C++C++ 中的 3d 全局数组
【发布时间】:2020-06-09 15:15:20
【问题描述】:

我正在尝试创建一个从命令行参数获取其大小的全局数组。截至目前,我的代码如下所示:

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];
    }

当我尝试为数组中的条目赋值时,会引发分段错误。我能做些什么来解决这个问题? gridSize 是从命令行读入的整数。

【问题讨论】:

  • Matrix[0][i], Matrix[1][i] = ... 不会像您认为的那样做。另请参阅Three Star Programmer
  • 您应该认真考虑您的设计。避免全局变量,避免原始指针,使用适当的矩阵类,使用std::vectorstd::array。其他所有事情迟早都会导致混乱。

标签: c++ pointers memory-management heap-memory


【解决方案1】:

c++,你可以利用拥有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)));
}

请注意,此版本的调整大小将删除所有以前的数据。

【讨论】:

    猜你喜欢
    • 2021-12-30
    • 1970-01-01
    • 2020-08-11
    • 2018-01-30
    • 1970-01-01
    • 2013-02-25
    • 2019-09-30
    • 1970-01-01
    • 2012-03-08
    相关资源
    最近更新 更多