我在我的程序的早期阶段,现在我只是尝试初始化一个2D数组来保存所有破折号,但我不断收到ECX_BAD_ACCESS错误。我的代码似乎使用方形数组(例如:5x5或6x6),但如果我做10乘5,我得到错误。
void readMatrix(char **twoDarray, int &rows, int &cols)
{
std::cout << "Enter number of rows for board";
std::cin >> rows;
std::cout << "Enter number of columns for board";
std::cin >> cols;
//dynamic 2D array initialization
twoDarray = new char*[rows];
for(int i = 0; i < cols; ++i)
twoDarray[i] = new char[rows];
//set elements of array to dashes
for(int i = 0; i < rows; ++i)
for(int j = 0; j < cols; ++j){
twoDarray[i][j] = '-';
}
//printing the array
for(int i = 0; i < rows; ++i){
std::cout << " " << std::endl;
for(int j = 0; j < cols; ++j)
std::cout << twoDarray[i][j] << " ";
}
}
答案 0 :(得分:1)
你的第一个for循环应该从0到#rows,而不是#cols。此外,在同一循环的主体中分配cols,而不是行。