Arduino内存泄漏(SD卡+字符串)
Arduino memory leaks (SD card + strings)
我在玩向SD卡写入字符串的游戏(当服务器连接不可用时会触发)。随后,它将传感器值记录到SD卡(在常规loop()
功能中),一旦与服务器的连接可用,它就会通过UDP将其作为数据包发送。
我似乎遇到了一些相当大的内存泄漏,一旦进入SD卡写入部分,就会发生这种情况,最终导致Arduino耗尽可用内存。
好的,我读过那段代码——如果你不为每次打开的情况调用close(),你就会有一个泄漏——只有一个文件对象(为什么我不知道)。
以下是有趣的代码:
void File::close() {
if (_file) {
_file->close();
free(_file);
_file = 0;
/* for debugging file open/close leaks
nfilecount--;
Serial.print("Deleted ");
Serial.println(nfilecount, DEC);
*/
}
}
他们似乎有一些很好的代码来查找泄漏。。。也许你应该试试。
另外,只需将末尾的代码更改为如下所示:
dataFile = SD.open("datalog.txt", FILE_WRITE);
// if the file is available, write to it:
if (SD.open("datalog.txt", FILE_WRITE))
{
dataFile.println(dataString);
// print to the serial port too:
Serial.println("data logged to SD");
}
// if the file isn't open, pop up an error:
else
{
Serial.println("File Error datalog.txt");
}
dataFile.close(); // always close after an open.
你没有给我们看SD对象的代码,所以这是个谜,但我想你需要调用dispose。。。也许是dataFile?