boost库下各种智能指针的发展:
智能指针的发展是为了解决内存泄漏的情况而诞生,在大型工程中,即时足够小心的保证new和delete 匹配出现。
但无法避免throw的异常抛出导致一段程序的提前结束而产生的内存泄漏。
诞生智能指针,用类封装原生指针。
auto_ptr 引入一个所有权的概念。指向的改变标志所有权的变更。 但是无法解决如下问题:
在一个块内对所有权做出改变,结束后再去修改内容时所有权已经不属于自己。因此在新的c++标准中将auto_ptr去除。
scoped_ptr : auto_ptr 的改进,如其名字一样。该智能指针
仅在一个作用域中有效。
由于以上的缺陷,引入shared_ptr 共享型智能指针,加入一个count的引用计数,需要赋值或者更改的操作,只需要变更引用计数。但是
无法解决循环计数的问题。
最终,引入weak_ptr