首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法处理Arduino String()来释放内存?

有没有办法处理Arduino String()来释放内存?
EN

Stack Overflow用户
提问于 2020-10-11 08:33:36
回答 1查看 811关注 0票数 1

有没有一种方法可以处理Arduino字符串对象,这样当字符串不再需要时,它使用的内存就会被释放?

我在引用中找不到这样的函数,当我调用free(&str)时,抛出了一个异常。

提前感谢您的帮助。西蒙

编辑:我使用Arduino-IDE编写代码,如下所示

代码语言:javascript
复制
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.
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-11 08:50:36

您可以使用大括号来创建显式作用域。C++标准要求在作用域中声明的对象在超出作用域时被销毁。对于管理动态内存的对象(例如String),这意味着动态内存将被释放到系统。

代码语言:javascript
复制
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的赋值运算符行为良好,并按预期释放内存。

代码语言:javascript
复制
String str = "some json String";
str = str.substring(10);
str = jsonRemoveWhiteSpace(str);

代码语言:javascript
复制
String str = "some json String";
str = jsonRemoveWhiteSpace(str.substring(10));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64299592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档