您的位置:首页 > 其它

以独立的语句将new对象置入智能指针

2017-03-20 19:06 218 查看

以独立的语句将newed对象置入智能指针:

processWidget(std::tr1::share_ptr<Widget>(new Widget) , priority());

我们在这使用对象管理式资源,却可能造成资源的泄露。

上面主要有3三件事情需要完成:

priority()

new Widget

share_ptr的构造函数

但是在C++中无法确定他们的调用顺序,于是可能出现下面这种:

new Widget

priority()

share_ptr的构造函数

万一priority的调用发生异常,由于还未置入share_ptr ,那么new Widget的指针会遗失,造成资源泄露。

因此最好以独立的语句将newed对象置入智能指针中

std:tr1::share_ptr<Widget> p(new Widget);
processWidget(p , priority())


参考:

Effective C++
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: