编程语言中实现自动垃圾回收机制方式有好几种,常见的有标记清除,引用计数,分代回收等。
C++需要手动管理垃圾,可以自己实现一个智能指针。最简单的是引用计数的思路
template <class T> class SmartPointer { T* obj; unsigned int* count; SmartPointer(T* ptr) { obj = ptr; count = new int; *count = 1; } SmartPointer(SmartPointer &p) { obj = p.obj; count = p.count; ++(*count); } SmartPointer &operator=(SmartPointer &p) { if (*this != p) { if(*count >0){ remove(); } obj = p.obj; count = p.count; ++(*count); return *this; } } virtual ~SmartPointer() { remove(); } private: void remove() { --(*count); if(*count == 0){ delete obj; delete count; obj == nullptr; count == nullptr; } } };
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/susser43/article/details/47156545