gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:54:41 25 4
gpt4 key购买 nike

我正在尝试将字符串写入 SD card (当服务器连接不可用时触发)。它随后将传感器值记录到 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?

关于c++ - Arduino内存泄漏(SD卡+字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11690647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com