下面的代码在尝试填充数组的第一个元素时填充动态2D数组的for
循环失败。
调试器告诉我它无法读取内存。
在此期间,rows = 7
和cols = 20
。
// sets rows to number of newline characters in the file
int rows = countRows("BookMaze.txt") + 1; /* +1 bc last row has no
newline char */
// sets number of columns to number of characters on a single row in a file
int cols = countCols("BookMaze.txt");
char **p_rows;
// allocate
p_rows = new char*[rows];
for (int i = 0; i < rows; i++)
p_rows[rows] = new char[cols];
// fill
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
p_rows[i][j] = '*';
}
}
答案 0 :(得分:1)
你有错误/错误:
11
应该是:
for (int i = 0; i < rows; i++)
p_rows[rows] = new char[cols];
^^^^
请注意,您应该尝试远离旧的skool C风格内存分配并使用正确的C ++容器。在这种特殊情况下,for (int i = 0; i < rows; i++)
p_rows[i] = new char[cols];
^
将是比原始C风格数组更好的选择。