boost智能指针
一、概述
1、boost::scoped_ptr
2、boost::scoped_array
3、boost::shared_ptr
4、boost::shared_array
5、boost::weak_ptr
6、boost::intrusive_ptr
二、详述
1、boost::scoped_ptr
1)、用途
用来管理动态资源,当scoped_ptr对象被释放的时候,其所管理的资源也被释放。
2)、特点
①、不可复制,即noncopyable,但可和其他scoped_ptr对象swap所管理的资源;
②、超出作用域即释放资源。
3)、原理
scoped_ptr对象在离开作用域时会调用析构函数,通过该析构函数来释放scoped_ptr对象所管理的资源。这样就可以防止程序员忘记delete动态资源。
4)、副作用
1)、两个scoped_ptr对象在同一个作用域内管理同一个资源,会有何后果?
2)、在作用域结束前,主动调用delete释放scoped_ptr对象所管理的资源,有何后果?
2、boost::shared_ptr
1)、用途
通过维护引用计数来管理动态资源。
2)、原理
在shared_ptr对象释放对所管理的动态资源的控制权时,会检查该资源有没有被其他shared_ptr对象所控制,若无,则释放该资源。

浙公网安备 33010602011771号