有没有办法处理 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
}

如果对变量命名影响不大,可以考虑将substringjsonRemoveWhiteSpace的结果赋值给你操作的StringString 的赋值运算符表现良好并按预期释放内存。

String str = "some json String";
str = str.substring(10);
str = jsonRemoveWhiteSpace(str);

String str = "some json String";
str = jsonRemoveWhiteSpace(str.substring(10));