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コマンドを追加すると、魔法のように機能しましたが、メモリの問題に気づきました。
誰かが回避策のアイデアを持っていますか?