在这种情况下我是否需要释放char

时间:2013-11-13 09:06:40

标签: c++ memory-management

我的代码看起来像这样:

const char *msg = getMessageFromAnObject(); // gets one slot from a char **

return std::string ( msg );

现在,我是否需要释放msg或是否需要谨慎处理。

感谢。 帕。

2 个答案:

答案 0 :(得分:5)

getMessageFromAnObject()返回const char*的事实表明您不需要释放返回值。但这只是一种倾向于在C API中使用的约定 - 唯一可以确定的方法是查看文档,或者如果有的话,可以查看源代码。

答案 1 :(得分:2)

这取决于对象的实现。谁是退回数据的所有者? 如果你的对象会在它的析构函数中释放内存,那么可能没有必要释放你身边的内存。但是如果该对象在该函数中分配了新内存(因此您是返回数据的所有者),则必须将其删除。