有没有一种方法可以处理Arduino字符串对象,这样当字符串不再需要时,它使用的内存就会被释放?
我在引用中找不到这样的函数,当我调用free(&str)时,抛出了一个异常。
提前感谢您的帮助。西蒙
编辑:我使用Arduino-IDE编写代码,如下所示
void setup() {
// a few setup things
}
void loop() {
String str1 = "some json String";
String str2 = str1.substring(10);
String str3 = jsonRemoveWhiteSpace(str2);
// so at this point I'd like to dispose of str1 and str2 to free up the memory,
// because the strings are also quite long json strings.
}发布于 2020-10-11 08:50:36
您可以使用大括号来创建显式作用域。C++标准要求在作用域中声明的对象在超出作用域时被销毁。对于管理动态内存的对象(例如String),这意味着动态内存将被释放到系统。
void loop() {
String str3;
{
// explicit scope begins here...
String str1 = "some json String";
String str2 = str1.substring(10);
str3 = jsonRemoveWhiteSpace(str2);
// ...and ends here
}
// at this point str1 and str2 go out of scope, and are destroyed
// str3 was declared outside of the scope, so is fine
}如果对变量命名没有太大影响,可以考虑将substring和jsonRemoveWhiteSpace的结果赋值给正在操作的String。String的赋值运算符行为良好,并按预期释放内存。
String str = "some json String";
str = str.substring(10);
str = jsonRemoveWhiteSpace(str);或
String str = "some json String";
str = jsonRemoveWhiteSpace(str.substring(10));https://stackoverflow.com/questions/64299592
复制相似问题