条款17:以独立语句将newed对象置入智能指针
为了避免资源泄漏的危险,最好在单独语句内以智能指针存储newed所得对象。
即:
void processWidget(std::tr1::shared_ptr<Widget> pw,
int priority);
std::tr1::shared_ptr<Widget> pw(newWidget); //即在传入函数之前对智能指针初始化,而不是在传入参数中
//对其初始化,因为那样可能引起操作序列的问题。
processWidget(pw, priority());
请记住:
- 以独立语句将newed对象存储于(置入)智能指针内。如果不这样做,一旦异常抛出,有可能导致难以察觉的资源泄漏。