所谓“智能指针”,并不是强调“智能”,其实质是帮助C++农民工 T_T 更好、更方便、更安全地管理动态内存,防止内存泄漏问题的出现。智能指针的工作原理就是将代码中申请的动态内存交给智能指针对象进行管理,智能指针对象在其生命周期结束(析构)时,将自己管理的动态内存释放掉,而不需要我们在代码中显式调用delete来释放内存。这样就达到了防止内存泄漏的目的,这就是所谓的“智能”。
来看代码#include运行代码#include #include using namespace std; class MyClass1 { public: MyClass1(); ~MyClass1(); void test(string temp); private: }; MyClass1::MyClass1() { cout << "MyClass1 construct" << endl; } MyClass1::~MyClass1() { cout << "MyClass1 distruct" << endl; } void MyClass1::test(string temp) { cout << temp << endl; } int main() { shared_ptr s1(new MyClass1); s1.get()->test("class 1 test"); getchar(); }
由控制台输出可以看到,在getchar()按下回车后return,意味着智能指针对象s1的生命周期已结束,MyClass1的析构函数被执行了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)