Новичок
-
Автор темы
- #1
Пытаюсь реализовать поворот шахматной доски 10 на 10:
При вызове rotateBoard() при отладке выдается:
Приложение остановлено, так как оно получило сигнал от операционной системы.
Сигнал:
SIGSEGV
Назначение:
Segmentation fault
Как исправить?
C++:
Board::Board(bool t, QObject *parent) : QObject(parent), turn{t}{
fullBoard = new Men*[N + 4];
for (int i = 0; i < N + 4; ++i){
fullBoard[i] = new Men[N + 4];
}
board = new Men*[N + 4];
rotated = new Men*[N + 4];
for (int i = 0; i < N + 4; ++i) {
board[i] = &fullBoard[i][2];
rotated[i] = &fullBoard[i][2];
}
++(++board);
initBoard();
}
Board::~Board()
{
for (int i = 0; i < N + 4; ++i){
delete []fullBoard[i];
delete []rotated[i];
}
delete []fullBoard;
delete []rotated;
}
void Board::rotateBoard() {
// Проверка, что указатели не являются нулевыми
if (!board || !rotated) return;
// Поворот
for (int i = 0; i < 10; ++i) {
for (int j = 0; j < 10; ++j) {
rotated[i][j] = board[9 - i][9 - j];
}
}
// Копирование обратно
for (int i = 0; i < 10; ++i) {
for (int j = 0; j < 10; ++j) {
board[i][j] = rotated[i][j];
}
}
}
Приложение остановлено, так как оно получило сигнал от операционной системы.
Сигнал:
SIGSEGV
Назначение:
Segmentation fault
Как исправить?