您的位置:首页 > 编程语言 > C语言/C++

学习笔记36-C++ 智能指针

2017-09-21 09:35 344 查看

动态分配内存-回收问题

因为C++没有自动内存回收机制,程序员每次new出来的内存都要手动delete,如果程序员忘记delete,那么这个指针指向的对象不能被安全删除,比如下面的情况:

Object_type *ptr=new Object_type();
ptr->func();
delete ptr;


如果程序员忘记第三行的delete,那么会造成一个悬挂指针(dangling pointer),也就是说这个指针指向的内存区域程序员无法把握和控制,非常容易造成内存泄漏。

而且,如果上述程序在执行过程中,func()运行时抛出异常,那么就算第三行有delete,对象也不能被安全删除。

智能指针

智能指针就是为了解决上述问题,它和普通指针的区别在于对普通指针加了一层封装机制,这样一层封装机制的目的是为了方便的管理一个对象的生命周期。

智能指针可以简单理解为自动释放当前管理的内存。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++