这一章主要内容是资源的管理:
notice 13:以对象管理资源,主要是防止内存泄露。RALL对象管理资源:tr1::share_ptr 和auto_ptr.
1获得资源后立刻放进管理对象。
2管理对象运用析构函数确保资源释放。
notice 14:RALL复制资源可选:禁止复制,计数复制。并注意深浅copy问题。
notice 15:对于要求访问原始资源,RALL应该提供对应方法,eg get();
对原始资源的访问分为显示访问和隐式访问。显示相对更安全些。
notice 16:new delete采用相同的形式。
notice 17:以独立语句将newed对象植入智能指针。
processWidget(std::tr1::shared_ptr<Widget>(new Widget),priority());
//---------------------------------------
std::tr1::shared_ptr<Widget> pw(new Widget);
processWidget(pw,priority())
针对up1,编译器执行顺序可以是:
a.执行 new Widget
b.调用 priority
c.调用 tr1::shared_ptr
b过程若是发生异常,便可能引发内存泄露。