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

来源:互联网 发布:c语言预处理指令格式 编辑:程序博客网 时间:2024/06/14 05:44

动态分配内存-回收问题

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

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

如果程序员忘记第三行的delete,那么会造成一个悬挂指针(dangling pointer),也就是说这个指针指向的内存区域程序员无法把握和控制,非常容易造成内存泄漏。
而且,如果上述程序在执行过程中,func()运行时抛出异常,那么就算第三行有delete,对象也不能被安全删除。

智能指针

智能指针就是为了解决上述问题,它和普通指针的区别在于对普通指针加了一层封装机制,这样一层封装机制的目的是为了方便的管理一个对象的生命周期。
智能指针可以简单理解为自动释放当前管理的内存。

原创粉丝点击