智能指针原理,并实现一个简单的智能指针
2016-06-12 22:09
513 查看
智能指针是一种资源管理类,通过对原始指针进行封装,在资源管理对象进行析构时对指针指向的内存进行释放;通常使用引用计数方式进行管理,一个基本实现如下:
class Object; class SmartPointer; class Counter { friend class SmartPointer; public: Counter() { ptr = NULL; cnt = 0; } Counter(Object* p) { ptr = p; cnt = 1; } ~Counter() { delete ptr; } private: Object* ptr; int cnt; }; class SmartPointer { public: SmartPointer(Object* p) { ptr_counter = new Counter(p); } SmartPointer(const SmartPointer &sp) { ptr_counter = sp.ptr_counter; ++ptr_count->cnt; } SmartPointer& operator=(const SmartPointer &sp) { ++sp.ptr_counter->cnt; --ptr_counter->cnt; if (ptr_counter->cnt == 0) { delete ptr_counter; } ptr_counter = sp.ptr_counter; } ~SmartPointer() { - -ptr_counter->cnt; if (ptr_counter->cnt == 0) { delete ptr_counter; } } private: Counter* ptr_counter; };
相关文章推荐
- share_ptr的几个注意点
- 智能指针与弱引用详解
- C++ 智能指针深入解析
- C++智能指针读书笔记
- How to get a boost::shared_ptr from this
- C++ 智能指针详解
- C++智能指针(auto_ptr)详解
- boost——智能指针札记
- 智能指针使用摘要
- boost 智能指针
- 智能指针
- [osg]源码分析:OSG中的智能指针osg::ref_ptr
- 智能指针
- C++ auto_ptr智能指针的用法
- Cocos2d内存管理分析
- C++ 智能指针详解
- C++中的智能指针(smart pointer)
- 56 RAII实现智能指针
- 87 智能指针(一)
- 【C++】智能指针