Программируя для моего Arduino (в какой-то смеси C / C ++), я заметил нечто странное.
Каждый раз, когда я общаюсь через последовательный порт, я слежу за использованием SRAM. Обычно он составляет от 300 до 400 байт.
Однако после добавления новой подпрограммы (см. Ниже) я заметил, что она всегда прыгает с 300 ~ 400 байт свободной памяти до ИМЕННО 1023. Я догадываюсь, что есть проблема.
Это новая процедура
void NewRoutine(char *cmdd){
GSM.print(cmdd);
GSM.print(26, BYTE);
GSM.print(endl); // <-- added later
Serial.print(availableMemory());
}
А это процедура MemoryCheck
int availableMemory() {
int size = 1024;
byte *buf;
while ((buf = (byte *) malloc(--size)) == NULL);
free(buf);
return size;
}
Обратите внимание: во-первых, это не сработало. После того, как я добавил команду endl, она работала волшебным образом, но затем я заметил проблему с памятью.
У кого-нибудь есть идеи для обхода?