我有以下代码:
std::string HtmlToText( std::string const& html )
{
boost::scoped_array<char> text( converter.toText( html.c_str() ) );
return text.get();
}
我对此代码的关注是在text
返回之后但在临时返回对象text.get()
构造之前是否会破坏对象std::string
。如果它在那时被破坏,那将是一个问题。
我在C ++ 03标准周围搜索了关于何时在函数范围内破坏与return语句相关的对象的规则和细节,但我没有找到我想要的东西。任何人都可以帮我找到它吗?
答案 0 :(得分:3)
我手边没有C ++ 03草案的文本,但我似乎记得在删除实际的text
对象之前,将会破坏从调用中创建的任何临时文件(LIFO自动排序)块范围内的对象)这应该保证你永远不会遇到这个问题。