使用指针和内存分配的c ++ 2D数组(new / delete)

时间:2016-11-30 10:26:21

标签: c++ arrays

我正在尝试构建一个具有动态尺寸的2D数组。我可以使用vector类,但我的任务禁止它。所以我想出了以下代码:

#include <iostream>
using namespace std;

int main() {
    cout << "1" << endl;
    int** 2DArr = new int*[5];
    cout << "2" << endl;
    for(unsigned int index = 0; index < 5; index++)
    {
        2DArr[index] = new int[5];
        cout << "3";
    }
    cout <<"\n4"<<endl;
    for(int row = 0; row < 5; row++)
    {
        cout << "5 " << endl;
        for(int col = 0; col < 5; col++)
        {
            cout << "6 " << endl;
            2DArr[row][col] = 1;
            cout << "7" << endl;
            cout << 2DArr[row][col];
            cout << "8" << endl;
        }
        cout << "8" << endl;
    }
    cout << "9" << endl;
}

上面的代码是我想要完成的一个例子,每个步骤都有数字。上面的代码似乎在打印“6”后立即挂起。任何人都可以向我解释为什么上面的代码不起作用以及我如何解决它?我的理解是可以使用[]访问由指针构成的2D数组,但由于某种原因,上面的内容挂起在我试图将1分配给2D数组的确切线上。我的猜测是它需要一个地址而不是一个int,但我;我不确定。请告诉我如何在步骤6中分配一个实际的整数。

非常感谢。

0 个答案:

没有答案