之前一直知道本身C++弱,可是何曾想.....居然弱到让人心碎.... 就是当是补当时莉莉的做业吧!html
参考博客:JustDoITios
C++的智能指针有四种,auto_ptr, shared_ptr, weak_ptr, unique_ptr,第一个已经被C++11废掉了函数
使用智能指针,是为了C++的内存泄漏问题。通常new一个对象,通常不能避免代码未执行到delete时,程序就跳转出去了,挥着函数没有执行到delete就返回了,若是不在每个可能跳转的地方或者返回的语句前释放内存,就会形成内存泄漏。使用智能指针,是由于智能指针就是一个类,当超出类的做用域时,类就会自动调用析构函数,析构函数会自动释放内存资源。spa
auto_ptr:主要是为了解决“有异常抛出时发生内存泄漏”的问题。以下的简单代码是这类问题的一个简单示例。指针
#include <iostream> #include <string.h> #include <memory> using namespace std; class Test { public: Test(string s) { str = s; std::cout<<"creat test\n"; } ~Test() { std::cout<<"delete test: "<<str<<std::endl; } string& getStr() { return str; } void setStr(string s) { str = s; } void print() { std::cout<<str<<std::endl; } private: string str; }; int main() { std::auto_ptr<Test> ptest(new Test("123")); ptest->setStr("hello "); ptest->print(); ptest.get()->print(); ptest->getStr() += "world !"; (*ptest).print(); ptest.reset(new Test("123")); ptest->print(); return 0; }
运行结果:htm