C++源码—_Ptr_base(MSVC 2017)

1 _Ptr_base

_Ptr_base 是智能指针的基类,它包含两个成员变量: 指向目标元素的指针 _Ptr引用计数基类指针 _Rep

_Ptr 指向的元素类型为 using element_type = remove_extent_t

_Ref_count_base 是 引用计数基类,它包含两个成员变量: 原子计数器 _Uses 和 弱引用计数 _Weaks

_MT_INCR 和 _MT_DECR 是宏定义,实现原子操作。

define _MT_INCR(x) _InterlockedIncrement(reinterpret_cast

define _MT_DECR(x) _InterlockedDecrement(reinterpret_cast

当 _Uses 为 0 时,调用 _Destroy() 释放对象;当 _Weaks 为 0 时,调用 _Delete_this() 释放 _Ref_count_base。此外就是一些引用计数的增加、减少等函数的实现。

Original: https://www.cnblogs.com/zyb993963526/p/15986051.html
Author: Kayden_Cheung
Title: C++源码—_Ptr_base(MSVC 2017)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/535548/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • const 在 C 和 C++ 中的区别

    1 C 中的 const 内存分配 1.1 修饰全局变量 cpp;gutter:true;</p> <h1>include</h1> <p…

    C++ 2023年5月29日
    049
  • 【面试攻略】C++面试-沐瞳游戏

    2020-11-24-沐瞳游戏自我介绍 1.你们IO用的什么(HPsocket),他是怎么实现的,(HPsocket他Windows通信用的什么)2.tcp的三次握手四次挥手3.有…

    C++ 2023年5月29日
    073
  • C++中的friend函数详细解析(二)

    一.设计模式 单例模式(类只能生成一个对象) 屏蔽构造函数,拷贝构造函数(放在private中 类外无法访问),此时类外就无法看到这两个函数了 也就无法生成对象了 类就没有意义了 …

    C++ 2023年5月29日
    058
  • C++快速入门系列教程

    移动开发工程师 。涉及 android、ios、jni Original: https://www.cnblogs.com/xitang/p/4176128.htmlAuthor:…

    C++ 2023年5月29日
    082
  • 34.C++-QT信号槽分析

    moc 元对象编译器, 全称是 Meta-Object Compiler,也就是”元对象编译器”。是QT翻译扩展语法到C++语言的工具,目前见扩展了信号与槽…

    C++ 2023年5月29日
    058
  • [C++] 浅拷贝和深拷贝

    浅拷贝只是简单的值拷贝; 深拷贝需要重新分配空间。 系统默认的拷贝构造函数属于浅拷贝。 输出结果为: HelloHelloWorldWorld 为什么修改对象 m 的值,对象 n …

    C++ 2023年5月29日
    068
  • C++选择文件打开方式的函数

    最近让同事给UE4一个功能,识别出 .ts、.json文件,然后双击这些文件可以直接打开。 默认双击 .json 时,调用 Windows 自带的记事本打开文件,不习惯,想着能否像…

    C++ 2023年5月29日
    064
  • c++实训课

    程序一: include 程序二: include 程序三: include Original: https://www.cnblogs.com/duanqibo/p/164138…

    C++ 2023年5月29日
    054
  • How to: Create a C/C++ Union by Using Attributes (C#)

    【 How to: Create a C/C++ Union by Using Attributes (C#)】 1、you can create what is known as…

    C++ 2023年5月29日
    065
  • Embarcadero 发布开源Bloodshed Dev C++ 分支

    Bloodshed Dev C++ 是一个老牌、小巧、快速的开源C++ IDE,它是用delphi 6开发的,从2000年开始 已经被下载过了67,796,885次。是学校、单位学…

    C++ 2023年5月29日
    060
  • C#与C/C++的交互

    C#与C/C++的交互 最近在编写Warensoft3D游戏引擎,并预计明年年初发布测试版本,底层引擎使用DirectX和MONO来编写,上层的逻辑使用C#来编写,因此编写了大量C…

    C++ 2023年5月29日
    063
  • c++以代理的方式来实现接口化编程

    假如你项目代码本身已经实现了很多的实体类,但并未采用接口,可以考虑以这种方式来实现接口化编程 struct ITest { virtual void Test()=0; }; cl…

    C++ 2023年5月29日
    072
  • C++调用C#的动态库dll

    以往我们经常是需要使用C#来调用C++的dll,这通过PInvoke就能实现。现在在实际的项目过程中,有时会遇到在C++的项目中调用某个C#的dll来完成特定的某个功能,我们都知道…

    C++ 2023年5月29日
    088
  • C++ d-bus 使用实例

    因为以后工作用的到D-bus,这两天抽空看了下c++下得d-bus的使用方法。因为网上对c++下得d-bus使用说明几乎没有,所以,在这里记录下以供同仁使用。同时感谢shengpe…

    C++ 2023年5月29日
    061
  • vscode配置c++

    在.vscode里创建三个文件 c_cpp_properties.json, launch.json, settings.json, tasks.json c_cpp_proper…

    C++ 2023年5月29日
    073
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球