Arduino - глобальные переменные теряют свое значение - PullRequest
0 голосов
/ 03 марта 2019

У меня есть две переменные: alarmMinute и alarmHour

Они распечатывают каждую петлю, и если у меня есть этот код, то alarmMinute падает до 0 после первой петли.

if(buttonPushed){
  alarmMinute += 5;
  if(alarmMinute > 60){
    alarmMinute = 0;
  }
}

Вывод монитора:

alarmHour: 14    alarmMinute: 28    currentSeconds: 6913    alarmSeconds: 6720    timeGap: 193    alarmLength: 300    AlarmProgress: 64
alarmHour: 14    alarmMinute: 0    currentSeconds: 6913    alarmSeconds: 5040    timeGap: 1873    alarmLength: 300    AlarmProgress: 0
alarmHour: 14    alarmMinute: 0    currentSeconds: 6914    alarmSeconds: 5040    timeGap: 1874    alarmLength: 300    AlarmProgress: 0

НО, если я закомментирую этот код:

if(buttonPushed){
// alarmMinute += 5;
// if(alarmMinute > 60){
//   alarmMinute = 0;
// }
}

Тогда я потеряю значение alarmHour вместо:

alarmHour: 14    alarmMinute: 28    currentSeconds: 7052    alarmSeconds: 6720    timeGap: 332    alarmLength: 300    AlarmProgress: 0
alarmHour: 0    alarmMinute: 28    currentSeconds: 7052    alarmSeconds: 1680    timeGap: 5372    alarmLength: 300    AlarmProgress: 0
alarmHour: 0    alarmMinute: 28    currentSeconds: 7053    alarmSeconds: 1680    timeGap: 5373    alarmLength: 300    AlarmProgress: 0

В обоих случаях я не нажимаю кнопку, поэтому код вообще не должен работать.Кроме того, когда оно имеет значение 28, код не должен влиять на alarmMinute, и, комментируя, что код определенно не должен влиять на значение alarmHour, кто-нибудь имеет представление очто происходит?У меня закончилась память или что-то еще?

1 Ответ

0 голосов
/ 11 марта 2019

В конце концов я обнаружил проблему - у меня был массив char[12], но я случайно заполнил его 13 пробелами.

Причина, по которой изменение, казалось бы, случайных частей кода, привело к исчезновению различных переменных, заключается в том, чтобыл в памяти рядом с массивом уничтожен.

Это основной принцип кибератак с сердечным кровотечением - ссылка на массив за его пределами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...