C ++:2D动态数组分配导致Visual Studio崩溃

时间:2016-11-16 21:59:57

标签: c++ arrays pointers matrix multidimensional-array

我对动态数组很新,特别是mullti-dimensional动态数组,我已经设法试图找到修复我的问题的StackOverflow和C ++教程网站,但我似乎找不到任何东西。无论如何我试图初始化一个2D动态数组与从文本文件中获取的值,我遇到了一些错误和问题。这些数字意味着放在数组内部以形成矩阵。但每次我运行我的代码时,它都会给我一个“Application.exe已停止工作错误”。

bool loadMatrix(const char *filename, int **matrix, int& rowCount, int& columnCount);

*matrix = new int[ rowCount * columnCount];

for( size_t currentRow=0; currentRow<rowCount; currentRow++) {
    for( size_t currentColumn=0; currentColumn<columnCount; currentColumn++){

        //This takes the value from the vector lines<> to be stored in the matrix
        int value = stoi(lines[currentRow][currentColumn], 0, 10);

        *matrix[currentRow * columnCount + currentColumn] = value;
    }
}

它与上面代码中的最后一行有100%的关系,因为所有其余代码都已在赋值框架中给出。我已经以各种方式编辑和更改了代码以尝试修复错误。一次尝试修复它,但导致另一个错误,数组的所有元素都被最后一个元素覆盖,如下所示:

matrix[currentRow * columnCount + currentColumn] = &value;

但正如您所看到的,这会导致另一个问题,因为现在矩阵中的所有值都被最后一个覆盖。同样,需要更新数组,以便在此函数外部可以访问添加的值,并且上述代码不允许在此函数之外访问更新的矩阵。以下是上述代码行的输出错误:

1,2,3  4,5,6

结果为

6,6,6 6,6,6

我不太清楚为什么第一次尝试会导致此错误,但我理解第二次尝试是由于某些指向内存错误的指针。

关于我如何解决这个问题的任何想法? 提前致谢

0 个答案:

没有答案