低调、勤奋。
分类: C/C++
2013-02-14 22:35:19
C++ auto_ptr智能指针的用法
C++中指针申请和释放内存通常采用的方式是new和delete。然而标准C++中还有一个强大的模版类就是auto_ptr,它可以在你不用的时候自动帮你释放内存。下面简单说一下用法。
具体内容见:http://blog.csdn.net/monkey_d_meng/article/details/5901392
上文已经描述了使用auto_ptr的一个缺陷是所有权能够转移,采用boost的scoped_ptr能很好解决该问题,。
scoped_ptr用法基本上和auto_ptr一样,大多数情况下可以相互替换,也可从auto_ptr中获得指针的管理。
两者都不可作为容器的元素,但原因不同:后者因为它的转移语义,后者不支持拷贝和赋值。
两者的根本区别在于指针的所有权。auto_ptr特意被设计为指针的所有权是可转移的,可以再函数之间传递,同一时刻只能有一个auto_ptr指针。而scoped_ptr将拷贝构造函数和赋值函数都声明了私有,拒绝了指针所有权的转让从而保证了指针的绝对安全