动态分配的2D数组EXC_BAD_ACCESS C ++中的错误

时间:2016-10-10 03:32:32

标签: c++ arrays runtime runtime-error

我在我的程序的早期阶段,现在我只是尝试初始化一个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] << "  ";
}

}

1 个答案:

答案 0 :(得分:1)

你的第一个for循环应该从0到#rows,而不是#cols。此外,在同一循环的主体中分配cols,而不是行。