class RefCounted{protected: RefCounted(){ m_ref_count = 0; } virtual ~RefCounted(){}public: void incRef() { ++m_ref_count; } void desRef()...
分类:
编程语言 时间:
2015-07-18 17:02:22
阅读次数:
190
假设有如下两个函数:int priority();void processWidget(std::tr1::shared_ptrpw, int priority);对processWidget的调用如下:processWidget(std::tr1::shared_ptrpw(new Widget....
分类:
编程语言 时间:
2015-07-17 18:17:30
阅读次数:
158
本将主要介绍智能指针shared_ptr和unique_ptr,并简单实现基于引用计数的智能指针。 自C++11起,C++标准提供两大类型的智能指针: 1. Class shared_ptr实现共享式拥有(shared ownership)概念。多个智能指针可以指向相同对象,该对象和其相关资...
分类:
编程语言 时间:
2015-07-14 17:30:18
阅读次数:
254
在c++中,动态内存的管理是通过一对运算符来完成的:new,在动态内存中为对象分配空间并返回一个指向该对象的指针,我们可以选择对对象进行初始化;delete,接受一个动态对象指针,销毁该对象并释放与之关联的内存。
动态内存在使用时很容易出问题,有时会忘记释放内存,造成内存泄露,有时在尚有指针引用内存的情况下就释放了内存,导致产生引用非法内存的指针。
为了更容易(同时也更安全)第使用动态内存,新的...
分类:
其他好文 时间:
2015-07-14 11:31:29
阅读次数:
102
//最挫的智能指针。
#include
using namespace std;
template
class my_auto_ptr
{
public:
my_auto_ptr(Type* p = NULL) :ptr(p){}
my_auto_ptr(const my_auto_ptr& ma)
{
ptr...
分类:
编程语言 时间:
2015-07-11 12:15:23
阅读次数:
168
使用一个类来代理另一个类,如智能指针auto_ptr,对智能指针的操作,实际上是对代理的指针的操作#include using namespace std;templateclass auto_ptr{public: explicit auto_ptr(T * p = 0){ p...
分类:
其他好文 时间:
2015-07-10 00:06:25
阅读次数:
149
1、C++中一般采用下面三种方法之一管理指针成员:
(1)指针成员采取常规行为。这样的类具有指针的所有缺陷:具有指针成员且使用默认复制构造函数和赋值操作符,无法避免悬垂指针(两个对象的指针成员指向同一内存,删除了其中一个指针指向的内存时,另一个指针将不再指向有效的内存空间)。
(2)类可以实现所谓的"智能指针"行为。引入计数类,智能指针类将一个计数器与类的对象相关联。使...
分类:
编程语言 时间:
2015-07-08 16:36:39
阅读次数:
237
C++不像Java一样,由虚拟机负责对象分配和释放。也就是说,开发人员使用C++编写代码时,要自己负责对象分配和释放。WebKit和Chromium都是使用C++开发的,因此它们也面临上述问题。在解决对象释放问题时,要做到在对象不需要时自动释放,因为手动释放会带来忘记释放或者释放后又继续使用的隐患。智能指针是实现对象自动释放的有效技术手段。本文就分析Chromium和WebKit的智能指针的实现。...
分类:
Web程序 时间:
2015-07-06 01:27:26
阅读次数:
126
/* current_exception */exception_ptr current_exception() noexcept;返回指向当前异常(或其副本)的智能指针【具体返回对象本身还是副本,是由具体实现库决定的】,如果当前没有异常发生,那么返回一个null-pointer。exception...
分类:
其他好文 时间:
2015-07-03 11:55:15
阅读次数:
142