C++ 智能指针
来源:互联网 发布:virtualbox安卓软件 编辑:程序博客网 时间:2024/05/21 09:10
由于C++ 中没有自动内存回收机制,每当程序员在堆上new 一块内存时都要通过delete释放掉。如果程序员忘记释放,可能会异常导致内存泄露,程序过早退出。
如果在程序中应用智能指针,可以有效缓解这类问题。
智能指针的类型主要有
boost::
smart_ptr
scoped_ptr
scoped_array
shared_ptr
shared_array
智能指针的原理与实现:
当类中有指针成员时,一般有两种方式管理指针成员。
1.采用值型的方式管理,每个类对象都保留一份指针指向的对象的拷贝。
2.优雅的方式是使用智能指针,从而实现指针指向对象的共享。
智能指针的通用实现技术是使用引用计数,智能指针类将一个计数器和类指向的对象项关联, 引用计数跟踪该类有多少个对象共用一个指针。
当一个对象作为另外对象的副本是,拷贝构造函数 拷贝指针并增加相应的引用计数,调用析构函数可以减少引用计数。引用计数的初始值为1,当减少为0,说明该对象被删除。
访问智能指针包含的裸指针则可以用 get() 函数。由于智能指针是一个对象,所以if (my_smart_object)永远为真,要判断智能指针的裸指针是否为空,需要这样判断:if (my_smart_object.get())。
智能指针包含了 reset() 方法,如果不传递参数(或者传递 NULL),则智能指针会释放当前管理的内存。如果传递一个对象,则智能指针会释放当前对象,来管理新传入的对象。
0 0
- c++:智能指针
- C++:智能指针
- 【C++】智能指针
- 【C++】智能指针
- C++PJ智能指针
- 【c++】智能指针
- 【C++】智能指针auto_ptr
- C++,智能指针
- C++,boost智能指针
- 智能指针模拟C
- [C++]智能指针
- 【C++】 浅析智能指针
- C++_智能指针
- C++:初识智能指针
- C++::智能指针
- 【C++】智能指针
- c智能指针:unique_ptr
- 【C++】智能指针
- 机房收费系统-概要设计说明书
- 【Android动画】之Frame动画
- CCS5 的基础知识
- nginx access_log buffer大小设置
- ORACLE 11g 自带程序 SQL Developer中不显示DBMS_OUTPUT.PUT_LINE()解决方案
- C++ 智能指针
- new String创建了多少个String对象
- 自己加班
- 利用ODBC管理excel文件
- C#面向对象经典资料
- Esper学习之二:事件类型
- php中实现倒计时的功能
- CRuntimeClass的结构与功能,DEClARE_DYNCREATE/IMPLEMENT_DYNCREATE
- OpenERP弹出窗口提示小结