有没有办法处理 Arduino String() 来释放内存?
Is there a way to dispose an Arduino String() to free memory?
有没有办法处理 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.
}
您可以使用花括号来明确范围。 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));
有没有办法处理 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.
}
您可以使用花括号来明确范围。 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));