Я пишу некоторый код для 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
2ff
4
5
4
4
5
5
6
6
7
7
0
0
1
1
2
2
3
3
4
4
5
5ff
7
07
7
С удаленной командой memcpy
она выводит, как я и ожидал.
Логическим выводом будет то, что мой memcpy
портит i
.
Но почему хотя? i
предположительно никогда не превышает 7, cchar
имеет длину 64 байта, и я копирую только 8 байтов, верно? Так как бы я копировал за пределами cchar
?