挺简单的一个类,只是维护了一个成员 shared_ptr<detail::trackable_pointee> _tracked_ptr; 这样看来的话,所谓的track还是基于智能指针,这里注意,track的对象需要从trackable_pointee继承,一个空类,主要还是为了用于标识。 ...
分类:
其他好文 时间:
2016-05-03 23:43:40
阅读次数:
248
shared_ptr
头文件: "boost/shared_ptr.hpp"
几乎所有稍微复杂点的程序都需要某种形式的引用计数智能指针。这些智能指针让我们不再需要为了管理被两个或多个对象共享的对象的生存期而编写复杂的逻辑。当引用计数降为零,没有对象再需要这个共享的对象时,这个对象就自动被销毁了。引用计数智能指针可以分为插入式(intrusive)和非插入式(non-intrusive)两类。前者要...
分类:
其他好文 时间:
2016-05-03 18:15:02
阅读次数:
237
资源管理
所谓资源就是,一旦使用了它,将来必须归还给系统!C++最常见的资源就是动态分配内存,如果不归还就会内存泄露。
1. 以对象管理资源
我们通常希望有一个对象来帮助我们解决资源管理的问题(自动调用析构函数),于是此章我们讨论auto_ptr和shared_ptr。
问题产生假设我们希望使用一个工厂方法如:class investment {...}; // 代表一个root clas...
分类:
编程语言 时间:
2016-04-29 17:03:29
阅读次数:
262
内存泄漏及浪费都是每个程序员非常忌讳的事情,但是稍有不慎就会造成不可弥补的损失,这里就这能指针sheard_ptr造成的循环引用及造成循环引用的原因我给大家给出了详细的图解及举例说明,同时也提供了避免这种循环引用的解决办法,就针对弱引用这一点做出了详细的解释,就针对shared_ptr和weak_ptr这两种智能指针的作用和用法也相加说明使得读者可以从代码及图例两方面对循环引用及解决办法有更深的认识。...
分类:
其他好文 时间:
2016-04-28 12:25:26
阅读次数:
260
TcpConnection是使用shared_ptr来管理的类,因为它的生命周期模糊。TcpConnection表示已经建立或正在建立的连接,建立连接后,用户只需要在上层类如TcpServer中设置连接到来和消息到来的处理函数,继而回调TcpConnection中的 setConnectionCallback和setMessageCallback函数,实现对事件的处理。用户需要关心的事件是有限的,...
分类:
其他好文 时间:
2016-04-22 18:47:44
阅读次数:
189
要保证线程安全、要保证高效。
这是一个跟芯片架构、编译器都相关的工作。
剖析boost::detail::shared_ptr的计数实现机制:
// shared_ptr中的引用计数成员属性pn
boost::detail::shared_count pn; // reference counter// shared_count中的pi成员属性
sp_counted_base * pi_;//...
分类:
其他好文 时间:
2016-04-12 17:34:35
阅读次数:
141
什么叫RAII(ResourceAcquisitionIsInitialization)?RAII指的就是资源分配即初始化,它的作用就是定义一个类来封装资源的分配和释放,在构造函数完成资源的分配和初始化,在析构函数完成资源的清理,可以保证资源的正确初始化和释放。它是一种技术。为什么要使用RAII?在堆上分..
分类:
其他好文 时间:
2016-04-06 18:54:12
阅读次数:
196
shared_ptrshared_ptr是一种智能指针,他的作用如同指针,但会记录有多少shared_ptr指向同一个对象。使用时必须引用头文件<boost/shared_ptr.hpp>template<classT>
classShartedPtr
{
public:
//构造函数
ShartedPtr(T*ptr)
:_ptr(ptr)
,_pCount(newint(1))
{..
分类:
其他好文 时间:
2016-04-05 02:21:14
阅读次数:
685
首先了解shared_ptr毫无疑问的是智能指针的一种,智能指针是为了解决在大型代码里无法不好控制指针的问题,例如:在类里面如果出现了动态开辟出来的空间,有一个指针指向这块空间,如果在相应的作用范围之内没有将其delete掉会造成内存的泄漏,所以这样就必须手动的对这一块空..
分类:
其他好文 时间:
2016-04-04 21:16:42
阅读次数:
332
一.统一的初始化方法 二.成员变量默认初始值 三.auto关键字用于定义变量,编译器可以自动判断变量的类型 四.decltype 关键字求表达式的类型 五.智能指针shared_ptr? 头文件: <memory>? 通过shared_ptr的构造函数,可以让shared_ptr对象托管一个new运 ...
分类:
编程语言 时间:
2016-04-01 20:14:47
阅读次数:
273