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对象所控制,若无,则释放该资源。

posted @ 2015-12-07 17:38  鹏城财少  阅读(164)  评论(0)    收藏  举报