参考文章:
http://blog.csdn.net/wzjking0929/article/details/22186559
STL提供了auto_ptr作为智能指针,这个类存放在<memory>头文件中,使用 的时候,需要包含该文件
auto_ptr是一个比较低级的智能指针,使用的时候,有以下几点需要特别注意,以免掉入陷阱:
1、不能使用 '=' 进行初始化,因为构造函数用到了 explict 关键字。
2、auto_ptr 要求拥有一个指针的绝对控制权。所以,拷贝构造和赋值之后,原指针不能再用了。
而且,需要防止两个指着指向同一个内存,这样导致delete指针两次。
防止直接作为函数参数,作为函数参数时,至少是使用const reference
3、不能指向非动态内存,因为析构时候,使用delete。delete非动态分配的指针,会导致未定义行为。
4、get() 函数可以获取auto_ptr指向的对象的内存地址。
5、reset() 函数,重新设置指向的对象,此函数接受普通指针作为参数。而且,它可以用来销毁对象,不传参数或传参NULL即可。
6、release() 返回指向的对象地址,并释放对这个对象的所有权。