Да, вы видите, что вы возвращаете указатель на объект (массив с именем board
), который был создан в стеке. Массив уничтожается, когда он выходит из области видимости, поэтому указатель больше не указывает на какой-либо действительный объект (висячий указатель).
Вам нужно убедиться, что массив выделен в куче, используя new
. Освященный метод создания динамически размещаемого массива в современном C ++ заключается в использовании чего-то вроде класса std::vector
, хотя здесь это сложнее, поскольку вы пытаетесь создать 2D-массив.
char **createBoard()
{
char **board=new char*[16];
for (int i=0; i<16; i++)
{
board[i] = new char[10];
for (int j=0; j<10; j++)
board[i][j]=(char)201;
}
return board;
}
void freeBoard(char **board)
{
for (int i=0; i<16; i++)
delete [] board[i];
delete [] board;
}