boost库中智能指针的发展

boost库下各种智能指针的发展:


                    智能指针的发展是为了解决内存泄漏的情况而诞生,在大型工程中,即时足够小心的保证new和delete 匹配出现。    但无法避免throw的异常抛出导致一段程序的提前结束而产生的内存泄漏。

                    诞生智能指针,用类封装原生指针。


                        auto_ptr    引入一个所有权的概念。指向的改变标志所有权的变更。 但是无法解决如下问题:

                         boost库中智能指针的发展_第1张图片

                在一个块内对所有权做出改变,结束后再去修改内容时所有权已经不属于自己。因此在新的c++标准中将auto_ptr去除。




                        scoped_ptr : auto_ptr 的改进,如其名字一样。该智能指针 仅在一个作用域中有效





                     由于以上的缺陷,引入shared_ptr 共享型智能指针,加入一个count的引用计数,需要赋值或者更改的操作,只需要变更引用计数。但是 无法解决循环计数的问题。



                        最终,引入weak_ptr

你可能感兴趣的:(应用,shared_ptr,boost,auto_ptr,weak_ptr)