我为 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);
}
在这种情况下,使用的开发人员ClassA::getMyUrl
必须记住释放为 url 分配的内存。有没有更人性化的方式来做到这一点?
重要提示:由于 Arduino 板上的内存限制,我不想返回整个ObjectB
,只返回它生成的内容。而且因为它可能是长字符串,我不想将它复制到getMyUrl
方法中提供的任何缓冲区作为参数。
更新:
我一定不够清楚:)。我想要达到的目标:
- 从 a.getMyUrl() 返回时,我不想
ClassB b
在内存中 - 从 developerMethod 返回时,我不想在没有释放的情况下既没有
ClassA a
也没有 在内存中。char* url
- 可能在字符串上使用 char*
我知道在这里使用 malloc 是错误的,这就是为什么我问这个问题,可能摆脱 malloc 并具有“自动”(至少从开发人员写作的角度来看developerMethod
)内存管理。
我想这可能很难/不可能实现,但即使不可能,也请告诉我,我会接受这样的答案(如果有人确认或几天后没有其他答案出现)。