众所周知,C#和java中不需要开发人员自己释放内存,对象引用计数为零后.Net和Java虚拟机会对对象进行自动回收,从而防止内存泄露;但是C++语言中,在堆上分配的内存必须自己去管理,不用的时候要自己释放,如果管理不当就可能会出现内存泄露。
C++11提供了智能指针,使用智能指针后不需要用户自己释放内存空间,一旦使用时对象超出了自己的生命周期,就会进行自动释放,从而有效解决了内存泄露的问题。
在实际编程时,有三种智能指针可供使用,分别是:std::shared_ptr、std::unique_ptr和std::weak_ptr。
1 共享智能指针:std::shared_ptr
std::share_ptr指针的每一个拷贝都指向同一个对象,只有在引用计数为零时内存才会被释放。
指针声明原型为:
templateclass shared_ptr;
1.1 std::shared_ptr的用法
std::shared_ptr指针可以有三种方法进行初始化,分别是构造函数、辅助函数以及reset方法进行初始化化,代码如下所示:
int main () {
std::shared_ptr sp; sp.reset (new int); //reset函数初始化 *sp=10; std::cout << *sp << 'n'; 


