2

我有以下代码:

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 语句相关的对象的规则和细节,但我没有找到我想要的东西。谁能帮我找到它?

4

1 回答 1

3

我手头没有 C++03 草案的文本,但我似乎记得从调用创建的任何临时对象都将在text删除实际对象之前被破坏(块范围内自动对象的 LIFO 排序),这应该保证你永远不会遇到这个问题。

于 2012-04-25T03:53:37.403 回答