от
Я пишу некоторый код для Arduino Uno, который включает в себя копирование части массива. Использование
memcpy
вызывает совершенно несвязанных переменных, иногда появляются искажения в серийное производство. Вот код, который надо показать на проблему.
byte cchar[8][8];
byte fbold[16][16];
void setup() {
  Serial.begin(9600);
}

void loop() {
  for (byte i = 0; i < 8; i  ) {
    memcpy(cchar   i*8, fbold   16 * i , 8);
    Serial.println(i);
    Serial.println(i);
  }
  delay(500);
}
Я считаю, что это должно вывести следующее На повторе:
1
1
2
2
3
3
4
4
5
5
6
6
7
7
но как ни странно, это больше похоже на это: (взято непосредственно из серийного монитора)
0
0
1
1
2
2
3
3ff
5
5
6
5
6
6
7
7
0
0
1
1
2
2
3
3
4
4
5
5
6
6ff7
7
С помощью команды
memcpy
удален, он выводит, как я ожидала. Логично было бы заключить, что мое
memcpy
развращает
i
. Но почему хоть?
i
это якобы не более чем 7,
cchar
составляет 64 байт, а я только копирую 8 байт, верно? Так как мне быть копирование за пределами
cchar
?

Пожалуйста, войдите или зарегистрируйтесь для публикации ответа на этот вопрос.

...