相关推荐
-
weak-ptr 和 shared-ptr 源码
关于C++智能指针 weak_ptr (弱引用 智能指针) 和 shared_ptr (强引用 智能指针)的源文件。 资源分不能设为0了。。
-
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控制引用计数来管理
-
智能指针SharedPtr
引用引用计数的浅拷贝 代码如下: template class SharedPtr { public: SharedPtr(T* ptr)//这里是正确的,因为是new出来的对象,而String类不是new出来的对象 :_ptr(ptr) // 不写成这样将是错误的,你就新开辟了一份空间,不是以前的空寂 , _pCount(new long(1)) {} ~SharedP
-
C++:共享指针(shared_ptr)详解
所有weak_ptr都会变成nullptr。所以,有时会出现weak_ptr还指向着对象,但是该对象已经被销毁了的情况。
-
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++深度探索 - shared_ptr源码分析
简要分析 gcc 4.9.0版本下 shared_ptr源码。
-
【C++】智能指针shared_ptr 底层源码实现
智能指针:智能指针是一个模板类,用来存储指向动态分配对象的指针,负责自动释放动态分配的对象,防止堆内存泄漏。动态分配的资源,交给一个类对象去管理,当智能指针类对象生命周期结束时,自动调用析构函数释放资源。shared_ptr 是一种共享所有权的智能指针,它使用引用计数的方式来管理资源。每个 shared_ptr 都有一个关联的引用计数器,当引用计数为0时,它会自动删除所管理的对象。
-
std:shared_ptr源码解读
加锁的策略 _Lock_policy 这个模板类型,最终传递给了内部属性 _Sp_counted_base* _M_pi。_M_pi 继承了_Mutex_base,这个基类一看名字就知道是进行互斥控制的类。_Sp_counted_base 类中 有个属性:_Atomic_word _M_use_count ,引用计数数值,int类型。shared_ptr继承自__shared_ptr,其功能主要由父类__shared_ptr 实现。就是构造时传入的指针指向类型,
-
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;
-
C++ 智能指针(shared_ptr/weak_ptr)源码分析
C++11目前已经引入了unique_ptr, shared_ptr, weak_ptr等智能指针以及相关的模板类enable_shared_from_this等。shared_ptr实现了C++中的RAII机制,它不仅仅具有一般指针(build-in/raw)的特性,更重要的是它可以自动管理用户在堆上创建的对象的生命周期,让用户不用为内存回收操心,避免内存泄漏。一般的智能指针都定义为一个模板类,...
-
shared_ptr的头文件
之前编译的时候一直无法识别shared_ptr,原来是头文件少了, 加上 这两个头文件就ok了。 #include #include
-
shared_ptr的引用计数原理
引用计数原理 指向相同资源的所有 shared_ptr 共享“引用计数管理区域”,并采用原子操作保证该区域中的引用计数值被互斥地访问。“引用计数管理区域”是指通过 new 创建的 sp_counted_impl_p 或 sp_counted_impl_pd 对象,在创建成功后立即由其基类指针指向它,而该基类指针被 shared_ptr 间接持有。类之间的关系为:
-
C++智能指针 shared_ptr 与 weak_ptr 原理
注:源代码摘自 GNU C++,除此之外为原创,转载请注明出处。 // Copyright (C) 2007-2016 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. 一、weak_ptr 的 lock() 函数原理/* 当每次有新的 shared_ptr 生成时,会增加 _Sp_
-
C++11智能指针之使用shared_ptr实现多态
指针除了管理内存之外,在C++中还有一个重要的功能就是实现多态。 代码很简单,还是使用虚函数。与原生指针并没有什么区别: #include #include using namespace std; class parent { public: virtual void showinfo() { cout << "parent info" << endl;
-
std::tr1::shared_ptr源码赏析
vs2010的std::tr1::shared_ptr和boost的shared_ptr比起来简单易懂,代码短小精悍。我没有细读过boost::shared_ptr的代码,粗略看过,细节上的区别还是很大的。 大致结构 shared_ptr是一个模板类,派生自_Ptr_base。其中_Ptr_base内记录的_Ty*是用户创建shared_ptr时传入的要管理的指针;而_Ptr_base
-
ROS nodelet的理解和使用
原文:https://www.cnblogs.com/21207-iHome/p/8213411.html ROS是一种基于分布式网络通讯的操作系统,整个机器人控制系统是由一个Master主节点和若干个功能相对独立的Node子节点组成,这也是ROS系统最主要的特点就是分布式以及模块化的设计。在ROS通讯过程中Master节点存储着各个子节点的topics和services的注册信息,每个功能节...
-
shared_ptr代码实现
shared_ptr代码实现 #include <iostream> using namespace std; template <class T> class shared_ptr { private: // 保存真实指针 T* ptr_; // 指向引用计数 int* ref_count_; public: shared_ptr(T *t) { ptr_ = t; // 初始化引用计数
-
Boost源码学习---shared_ptr.hpp
shared_ptr源代码的概略介绍。
-
nodelet的理解
1.介绍 nodelet包可以为在相同进程中的多个算法之间实现零拷贝的传输方式。 这个包也提供了实现一个nodelet所需的nodelet基类以及用于实例化nodelet的NodeletLoader类。 Source: git https://github.com/ros/nodelet_core.git (branch: indigo-devel) Nodelets旨在提供一种在单机器单...
2 楼 Puras 2011-05-13 09:08
该死的墙
1 楼 dwbin 2011-05-13 08:52