相关推荐
-
weak-ptr 和 shared-ptr 源码
关于C++智能指针 weak_ptr (弱引用 智能指针) 和 shared_ptr (强引用 智能指针)的源文件。 资源分不能设为0了。。
-
C++ 智能指针(shared_ptr/weak_ptr)源码分析
C++11目前已经引入了unique_ptr, shared_ptr, weak_ptr等智能指针以及相关的模板类enable_shared_from_this等。shared_ptr实现了C++中的RAII机制,它不仅仅具有一般指针(build-in/raw)的特性,更重要的是它可以自动管理用户在堆上创建的对象的生命周期,让用户不用为内存回收操心,避免内存泄漏。一般的智能指针都定义为一个模板类,...
-
C++智能指针实现
上一篇介绍内存池的文章中提到一个基于内存池的智能指针。C++没有GC机制,需要程序员自己管理内存,而智能指针则是C++程序员管理内存的利器。智能指针的原理早已广为人知,通俗来讲就是用类来表示指针(用类来表示对象是OPP思想的核心),成员函数里构建一个指向对象的指针,在构造函数,赋值函数,复制构造函数,析构函数等会改变对象个数的地方增加或减少引用计数,当引用计数为0时,释放指针指向的内存,从而避免了...
-
【c++】【智能指针】shared_ptr底层实现
std::shared_ptr被销毁时,它会。
-
shared_ptr 和weak_ptr
shared_ptr 参考自https://www.jianshu.com/p/b6ac02d406a0 shared_ptr类几乎什么都没有做,它是继承了__shared_ptr, __shared_ptr内部有一个类型为__shared_count类型的成员_M_refcount, __shared_count内部有类型为_Sp_counted_base*的_M_pi的成员, _Sp_counted_base才是整个shared_ptr功能的核心,通过_Sp_counted_base控制引用计数来管理
-
C++智能指针shared_ptr用法
C++,shared_ptr对象管理指针,shared_ptr提供的接口, shared_ptr初始化,构造函数初始化,std::make_shared 初始化,reset初始化,shared_ptr管理指针的构造和析构,shared_ptr获取原始指针,shared_ptr的线程安全,shared_ptr应用之enable_shared_from_this.
-
【C++】share_ptr详解
分析:根据对象生成顺序,先初始化基类 enable_shared_from_this ,再初始化派生类 Frame 对象本身,这时 Frame 对象已经生成,但 _M_weak_this 成员还未被初始化,最后应通过 shared_ptr<T> sp(new T()) 等方式调用 shared_ptr 构造函数(内部会调用 _M_weak_assign 成员函数来初始化 _M_weak_this 成员)。share_ptr 内部中的引用计数是线程安全的,但是引用的资源不是线程安全的。
-
智能指针SharedPtr
引用引用计数的浅拷贝 代码如下: template class SharedPtr { public: SharedPtr(T* ptr)//这里是正确的,因为是new出来的对象,而String类不是new出来的对象 :_ptr(ptr) // 不写成这样将是错误的,你就新开辟了一份空间,不是以前的空寂 , _pCount(new long(1)) {} ~SharedP
-
简介shared_ptr
多年前写了一篇shared_ptr简介的博客,现在觉得写得不好,就重写一下。加了一些代码和新的内容: aliasing constructor 和 owner_before.
-
shared_ptr源码分析
// 引用计数器的同步方式, 单线程情形无需同步, 多线程下如支持原子操作则使用atomic, 否则退化为锁 enum _Lock_policy { _S_single, _S_mutex, _S_atomic }; static const _Lock_policy __default_lock_policy = #ifndef __GTHREADS _S_single; #elif defined _GLIBCXX_HAVE_ATOMIC_LOCK_POLICY _S_atomic;
-
shared_ptr智能指针源码分析
先写应用代码 #include <iostream> #include <memory> int main() { std::shared_ptr<int> sptr(new int(42)); // sptr1 = std::make_shared<int>(32); std::shared_ptr<int> sp2 = sptr; std::weak_ptr<int >wptr; wptr = sptr; std::co
-
c++11 shared_ptr 与 make_shared源码剖析
所谓智能指针,可以从字面上理解为“智能”的指针。具体来讲,智能指针和普通指针的用法是相似的,不同之处在于,智能指针可以在适当时机自动释放分配的内存。也就是说,使用智能指针可以很好地避免“忘记释放内存而导致内存泄漏”问题出现。由此可见,C++ 也逐渐开始支持垃圾回收机制了,尽管目前支持程度还有限。c++11 中发布了shared_ptrunique_ptrweak_ptr用以资源的管理,都是定义在memory 这个头文件中。
-
C++11里shared_ptr源码剖析
很多人不知道引用计数放在哪,昨天为止我也不知道,O(∩_∩)O哈哈~A *a = new A; shared_ptr<A> sp(a);上面代码发生了什么呢? 进入shared_ptr的构造函数template<class _Ux> explicit shared_ptr(_Ux *_Px){ _Resetp0(_Px, new _Ref_count<_Ux>(_Px));
-
【C++】智能指针shared_ptr 底层源码实现
智能指针:智能指针是一个模板类,用来存储指向动态分配对象的指针,负责自动释放动态分配的对象,防止堆内存泄漏。动态分配的资源,交给一个类对象去管理,当智能指针类对象生命周期结束时,自动调用析构函数释放资源。shared_ptr 是一种共享所有权的智能指针,它使用引用计数的方式来管理资源。每个 shared_ptr 都有一个关联的引用计数器,当引用计数为0时,它会自动删除所管理的对象。
-
boost shared_ptr 源码解析
如题
-
shared_ptr中高级应用
在编写基于虚函数的多态代码时,指针的类型转换很有用,比如把一个基类的指针转换成一个派生类的指针或者反过来。但是对于shared_ptr不能使用诸如static_cast&lt;T*&gt;(p.get())的形式,这样会导致转型后的指针无法再被shared_ptr正确管理。 为了支持类似的用法,shared_ptr提供了类似的转型函数,static_pointer_cast&lt;T&gt;()...
-
shared_ptr源码分析后续
上次剖析了shared_ptr类的源码,本来肯定也是要说shared_count的,不过由于篇幅,shared_count在这篇博客分析。shared_ptr类自身有两个成员,一个就是T类型指针,另一个就是shared_count对象了。shared_ptr把所有的计数任务都交给了该成员,最终指针的销毁也是由该对象去执行的(底层实际还有sp_counted_base)。这是一种解耦的思想。 源码
-
boost::shared_ptr智能指针分析
1. 简介 boost.smart_ptr 库中最有价值、最重要的组成部分,也是最有用的。 shared_ptr 与 scoped_ptr 一样包装了new 操作符在堆上分配的动态对象,但它实现的是引用计数型的智能指针,可以被自由地拷贝和赋值,在任意的地方共享它,当没有代码使用(引用计数为0)它时才删除被包装的动态分配的对象。shared_ptr 也可以安全地放到标准容器中,并弥补了a
-
c++ 智能指针shared_ptr
c++共享指针shared_ptr
2 楼 Puras 2011-05-13 09:08
该死的墙
1 楼 dwbin 2011-05-13 08:52