Проблема заключается в том что я не могу понять почему я получаю ошибку SIGSEGV. Если я собираю в режиме Debug программа работает, все хорошо, все как задумал. А вот если компилю в релиз моде, то я при работе получаю ошибку SIGSEGV.
Может я неправильно объявил двумерный массив?
Приложу то в чем я подозреваю проблему:
Вот класс mainwindow.h
// mainwindow.h
private:
int gameData[4][4];
public:
int getGameData(int x, int y);
int setGameData(int x, int y, int val);
Вот класс mainwindow.cpp
// mainwindow.cpp
void MainWindow::moveLeft(){
bool move = false;
// Сдвиг в влево
for(int x =0; x<4; x++){
for(int y=0; y<4; y++){
if(MainWindow::getGameData(x, y) == 0){
for (int i = y; i < 4; i++){
if(MainWindow::getGameData(x, i) != 0){
MainWindow::setGameData(x, y, MainWindow::getGameData(x, i));
MainWindow::setGameData(x, i, 0);
move = true;
break;
}
}
}
}
}
for(int x = 0; x<4; x++){
for(int y = 0; y<3; y++){
if(MainWindow::getGameData(x, y) == MainWindow::getGameData(x, y+1)){
MainWindow::setGameData(x, y, MainWindow::getGameData(x, y)*2);
MainWindow::scoreValuePlus(MainWindow::getGameData(x, y));
MainWindow::setGameData(x, y+1, 0);
move = true;
}
for(int x =0; x<4; x++){
for(int y=0; y<4; y++){
if(MainWindow::getGameData(x, y) == 0){
for (int i = y; i < 4; i++){
if(MainWindow::getGameData(x, i) != 0){
MainWindow::setGameData(x, y, MainWindow::getGameData(x, i));
MainWindow::setGameData(x, i, 0);
break;
}
}
}
}
}
if(MainWindow::getGameData(x, y) == 0){
ui->gameGrid->item(x, y)->setData(Qt::DisplayRole, QVariant(""));;
}
else {
ui->gameGrid->item(x, y)->setData(Qt::DisplayRole, QVariant(MainWindow::getGameData(x, y)));
}
}
}
if(move == true){
MainWindow::generateCell(true);
MainWindow::moveValuePlus();
}
Вот весь листинг кода:
mainwindow.h mainwindow.cpp
Для решения вопроса помогла дополнительная проверка при сложении чисел.
for(int x = 0; x<4; x++){
for(int y = 3; y>=0; y--){
if(y>0 && MainWindow::getGameData(x, y) == MainWindow::getGameData(x, y-1))
Всем спасибо большое!
Виртуальный выделенный сервер (VDS) становится отличным выбором
Что это обозначает и зачем оно вообще нужно? Может где то используется?
Поясните мне мою ошибку в данной функции на выделение памятиКак только доходит до строчки numb[i] = new char[50]; - сразу ошибка и в отладчике пишет...
Добрый день! У меня имеется статический метод listOfStudents() который открывает текстовый файл и считывает оттуда мои данные
В чем ошибка?задание вычисление функции разложения в рядво внутреннем цикле значение суммы ТЕКСТ ЗАДАНИЯ