• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Самопроизвольное обнуление переменной

Motobiker

Member
Как такое возможно?

Код:
void Game::Start(int i)
{
  player_ID = i;
  Serial.println("start, player ID - " + String(player_ID));
  init_game_flag = false;
  ns[1] = num_shots_1;
  ns[2] = num_shots_2;
  ns[3] = num_shots_3;
  ns[4] = num_shots_4;
  ns[5] = num_shots_5;
  ns[6] = num_shots_6;
  ns[7] = num_shots_7;
  ns[8] = num_shots_8;
  Serial.println("start, player ID - " + String(player_ID));
}
terminal:
start, player ID - 1
start, player ID - 0
 

Motobiker

Member
Если смещать строчку с выводом переменной вверх, то последнее место с правильным значением оказывается здесь:

Код:
void Game::Start(int i)
{
  player_ID = i;
  Serial.println("start, player ID - " + String(player_ID));

  init_game_flag = false;
  ns[1] = num_shots_1;
  ns[2] = num_shots_2;
  ns[3] = num_shots_3;
  ns[4] = num_shots_4;
  ns[5] = num_shots_5;
     Serial.println("start, player ID - " + String(player_ID));
  ns[6] = num_shots_6;
  ns[7] = num_shots_7;
  ns[8] = num_shots_8;


}
start, player ID - 1
start, player ID - 1
 

Motobiker

Member
нашел ошибку
при определении массива не указал размер
Код:
int ns[];
исправил на
Код:
int ns[8];
 

enjoynering

Well-known member
Видел такой глюк. Обычно первая и вторая запись декларации массива верна. Но если в вашем проекте код занимает почти всю кучу и стек, то могут происходить такие чудеса. Сам один раз с этим столкнулся.
 
Сверху Снизу