我有一个返回常量 char 指针的方法。它使用 std::string
并最终返回其 c_str()
字符指针。
const char * returnCharPtr()
{
std::string someString;
// some processing!.
return someString.c_str();
}
我从 COVERITY 工具得到了一份报告,上面的用法不是很好。我用谷歌搜索并发现返回的 char 指针将在 someString
遇到其破坏后立即失效。
鉴于此,如何解决此问题?如何准确返回char指针?
返回 std::string
将解决此问题。但我想知道是否有其他方法可以做到这一点。
原文由 user3210526 发布,翻译遵循 CC BY-SA 4.0 许可协议
这段代码中发生的事情是:
std::string
的实例被创建 - 它是一个具有自动存储持续时间的对象someString
被破坏,其内部内存被清理最好的解决方案是 _返回一个对象_:
调用你的函数时, 不 要这样做:
因为
returnedString
在返回的std::string
被破坏后仍然会悬空。而是存储整个std::string
: