gpt4 book ai didi

c++ - "unable to read memory"填充二维动态数组时

转载 作者:行者123 更新时间:2023-11-30 05:32:07 32 4
gpt4 key购买 nike

当尝试填充数组的第一个元素时,下面的代码在填充动态二维数组的 for 循环中失败。

调试器告诉我它无法读取内存。

在此运行期间,rows = 7cols = 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] = '*';
}
}

最佳答案

你这里有错字/错误:

for (int i = 0; i < rows; i++)
p_rows[rows] = new char[cols];
^^^^

应该是:

for (int i = 0; i < rows; i++)
p_rows[i] = new char[cols];
^

请注意,您真的应该尝试摆脱旧的 skool C 风格内存分配并使用适当的 C++ 容器。在这种特殊情况下,std::vector 会是比原始 C 风格数组更好的选择。

关于c++ - "unable to read memory"填充二维动态数组时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35259378/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com