c++ - 填充动态数组时获取退出状态-1

标签 c++ multidimensional-array dynamic-memory-allocation exitstatus

出于某种原因,即使我已经查看并尽可能确定我正在做这件事,但我一直在这段代码中获得退出状态 -1。我只是想创建一个动态二维数组并用 0 填充每个值:

Grid::Grid(int _rows, int _cols){

    Grid::rows = _rows;
    Grid::cols = _cols;

    Grid::grid = new int*[Grid::rows];

    for(int i = 0; i < Grid::rows; i++){

        Grid::grid[i] = new int[Grid::cols];

    }

    for(int i = 0; i < 1; i++){

        for(int j = 0; j < 1; i++){

            Grid::grid[i][j] = 0;

        }

    }
}

我已经进行了一些测试,当我尝试填充数组时,代码在没有第二个 for 循环的情况下运行良好,所以我认为问题就在那里,尽管我看不出它有什么问题.

为了以防万一,下面是这个类:

class Grid{

    private:

    int rows;
    int cols;
    int** grid;

    public:

    Grid(int _rows, int _cols);
    int getRows(){return rows;}
    int getCols(){return cols;}
    int** getGrid(){return grid;}
    void deleteArray();

};

我是 C++ 的新手,所以如果这是一个明显的错误,请宽容我。感谢您的帮助。

最佳答案

我怕你没仔细看

for(int i = 0; i < 1; i++){

    for(int j = 0; j < 1; i++){

        Grid::grid[i][j] = 0;

    }

}

应该是

for (int i = 0; i < rows; i++) {
    for (int j = 0; j < cols; j++) {
        grid[i][j] = 0;
    }
}

您在内部循环中增加了错误的变量(这意味着它将永远循环)。由于某些原因,您的循环限制为 1 而不是 rowscols

并且不需要在成员变量前加上 Grid:: 前缀。

关于c++ - 填充动态数组时获取退出状态-1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54919978/

相关文章:

C++ - 将 BLOB 存储为字符串

c++ - 返回原始指针而不是 unique_ptr 是好的编码习惯吗?

javascript - 为什么此代码返回 3 维数组

c - 如何使用malloc将2d转换为3d数组?

c++ - 如何在 C++ 中分配大型动态数组?

c - Linux 堆碎片

c++ - WINAPI 代码中的链接器错误

C++, Visual Studio : Is it possible to create an executable that would set up enviroment variables and than execute?

php - php中数组中重复元素的计数

php - Laravel 多维数组获取值