我对动态数组很新,特别是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
我不太清楚为什么第一次尝试会导致此错误,但我理解第二次尝试是由于某些指向内存错误的指针。
关于我如何解决这个问题的任何想法? 提前致谢