安全地返回指向本地对象成员的指针

Ada*_*ała 0 c++ memory return arduino

我为Arduino设备编写程序,但问题是一般的(我认为).

假设我有以下代码:

char* ClassB::generateUrl()
{
    char* someString = (char*) malloc(...);
    // something...
    return someString;
}

char* ClassA::getMyUrl()
{
    ClassB b;
    return b.generateUrl();
}

void developerMethod()
{
    ClassA a;
    char* url = a.getMyUrl();
    print(url);
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,使用的开发人员ClassA::getMyUrl必须记住释放为url分配的内存.有没有更方便用户使用的方法呢? 重要提示:由于Arduino板上的内存限制,我不想返回整体ObjectB,只返回它生成的内容.并且因为它可能是长字符串,我不想将它复制到getMyUrl方法中提供的任何缓冲区作为参数.

更新:

我一定不够清楚:).我想要实现的目标:

  • 从a.getMyUrl()返回时,我不想拥有ClassB b内存
  • 从developerMethod返回时,我不希望既没有ClassA a也没有 char* url内存,没有释放.
  • 可能在字符串上使用char*

我知道在这里使用malloc是错误的,这就是为什么我问这个问题,可能摆脱malloc并且"自动"(至少从开发人员写的角度来看developerMethod)内存管理.

我想这可能很难/不可能实现,但即使这是不可能的,只要让我知道,我会接受这样的答案(如果有人在几天内确认或没有其他答案).

Alo*_*ave 6

如果你想在C++中使用字符串,只需使用std::string.一旦你这样做,你就不必为这样的事情烦恼了.
这正是C++的原因std::string.