#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