gpt4 book ai didi

c++ - 我负责释放/删除stringstream.str()返回的字符串吗?

转载 作者:行者123 更新时间:2023-12-01 15:14:26 30 4
gpt4 key购买 nike

我有责任删除由stringstream创建的返回的std::string吗?如以下代码所示:

std::string MyClass::getReturnMessage() {
std::stringstream msg;
msg << "Test return code string stream!";
return msg.str();
}

void MyClass::callerMethod() {
std::string msg = getReturnMessage();
// do I need to call delete msg?
}

如果我不负责在返回值上调用delete,那为什么不呢?这里需要或不需要我调用delete的内存管理模型是什么?

最佳答案

仅在分配了delete的对象上调用new

由于您的情况下没有new,因此也不要调用delete

原因是返回的std::string具有自动存储持续时间(因为它是在堆栈上分配的),因此当它超出范围时将自动被销毁。

关于c++ - 我负责释放/删除stringstream.str()返回的字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28918189/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com