Программирование для моего Arduino (в каком-то сочетании C/C++), я заметил что-то странное.Проблема с памятью 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, она работала волшебно, но потом я заметил проблему с памятью.
У кого-нибудь есть идеи для обходного пути?
Добро пожаловать в Stack Overflow! –
Майк, я бы предложил избегать использования malloc в 1K RAM-машине. Вы должны уйти, не используя его в этой ситуации. :-) –