我的代码看起来像这样:
const char *msg = getMessageFromAnObject(); // gets one slot from a char **
return std::string ( msg );
现在,我是否需要释放msg或是否需要谨慎处理。
感谢。 帕。
答案 0 :(得分:5)
getMessageFromAnObject()
返回const char*
的事实表明您不需要释放返回值。但这只是一种倾向于在C API中使用的约定 - 唯一可以确定的方法是查看文档,或者如果有的话,可以查看源代码。
答案 1 :(得分:2)
这取决于对象的实现。谁是退回数据的所有者? 如果你的对象会在它的析构函数中释放内存,那么可能没有必要释放你身边的内存。但是如果该对象在该函数中分配了新内存(因此您是返回数据的所有者),则必须将其删除。