#include <iostream>
#include <memory>
using namespace std;
struct A
{
explicit A(string str){m_str = str; cout << m_str << " : constructor~~" << endl; }
~A(){cout << m_str << " : deconstructor~~~" << endl;}
void outmsg(){cout << "outmsg : "+m_str << endl;}
private:
string m_str;
};
int main()
{
auto_ptr<A> aptr (new A(string("auto")));
aptr.get()->outmsg();
aptr.reset(new A(string("msg")));
auto_ptr<A> aptr2 (aptr.release());
//auto_ptr<A> aptr2 (aptr.get()); //出现段错误,这是由于aptr和aptr2指向了同一个对象,出现了重复释放的问题 double free or corruption (fasttop)
}原文地址:http://blog.csdn.net/pngynghay/article/details/42705445