在return语句中使用boost :: scoped_array :: get()

时间:2012-04-25 03:32:14

标签: c++ boost smart-pointers

我有以下代码:

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语句相关的对象的规则和细节,但我没有找到我想要的东西。任何人都可以帮我找到它吗?

1 个答案:

答案 0 :(得分:3)

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