为我的 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 命令后,它神奇地工作,但后来我注意到内存问题。
有人有解决方法的想法吗?