Arduino内存泄漏(SD卡+字符串)

时间:2012-07-27 15:10:53

标签: c++ memory-leaks arduino

我正在编写一个SD card的字符串(当服务器连接不可用时触发)。它随后将传感器值记录到SD卡(在常规loop()功能内),一旦与服务器的连接可用,它就会通过UDP将其作为数据包发送。

一旦输入SD卡写入部分,我似乎遇到了一些非常大的内存泄漏,最终导致Arduino耗尽空闲内存。

1 个答案:

答案 0 :(得分:2)

好的,我读了那段代码 - 如果你没有为打开每个的情况调用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对象的代码,所以这是一个谜,但我希望你需要调用一些东西......也许是dataFile?