当前位置: 首页 > news >正文

vs2019 c++20 规范的 STL 库的智能指针 shared、unique 、weak 及 make_** 函数的源码注释汇总,和几个结论

智能指针的源码都在 《memory》 头文件中。因为头文件太长,再者本次整理是基于以前的零散的模板分析。故相当于抽取了该头文件中关于智能指针的源码进行分析,注释。

(1 探讨一)当独占指针指向数组时,其默认的删除器是哪个?相关模板的定义轮廓如下:

在这里插入图片描述

我们要分析、猜测编译器在泛型推导时是如何确定模板参数的类型的。先给出一段源码,如下:

在这里插入图片描述

测试如下:

在这里插入图片描述

以及:

在这里插入图片描述
以及:

在这里插入图片描述

STL 库代码肯定是不会错的。可以得出结论啊: unique_ptr 声明时的模板参数 _Ty 的含义不同于模板定义时的模板参数 _Ty, 模板声明时的删除器的默认值是对第一个模板实参的整体取 default_delete<_Ty[]> ,所以选择了正确的删除器模板。

(2 探讨二) 独占指针可以指向数组,对其成员函数 reset 的形参,应该提供数组指针,而不是普通指针。源码摘抄如下:

在这里插入图片描述

增加一些打印语句:

在这里插入图片描述

以及:

在这里插入图片描述

但又测试了一下:

在这里插入图片描述

(3 探讨三) 独占指针的内存模型。独占指针的构造还是比较简单的,因为不需要考虑资源共享,独占指针其实就是对裸指针的封装。摘抄的源代码如下:

在这里插入图片描述

(4 探讨四) 对 make_unique 函数的形参,若创建指向数组的独占指针,函数形参是数组的长度;若创建指向普通对象的独占指针,函数形参是要传递给对象的构造函数的。依据源码如下:

在这里插入图片描述

该图中出现了 extent_V 模板的使用,其源码如下:

在这里插入图片描述

比较难以理解,给出几个测试结果如下:、

在这里插入图片描述

(5)

http://www.lryc.cn/news/355581.html

相关文章:

  • 【大模型】 基于AI和全球化进程的权衡:开源大模型与闭源大模型
  • 强化学习——学习笔记
  • NAT简介
  • 联想凌拓 NetApp AFF C250 全闪存存储助力丰田合成打造数据新“引擎”
  • 红队技巧:仿冒Windows登录
  • 821. 字符的最短距离 - 力扣
  • BI工具如何为金融行业带来变革?金融行业营销管理策略大揭秘
  • 操作系统 - 计算机系统概述
  • [论文笔记]REACT: SYNERGIZING REASONING AND ACTING IN LANGUAGE MODELS
  • []下标的意义
  • 去重复记录和排序——kettle开发09
  • 中创算力与中国移动初步达成战略合作意向,共同构建智能生态圈!
  • 基础—SQL—DML(数据操作语言)插入数据
  • 【改變,是面對的開始】
  • AI大模型实现德语口语练习
  • 一文读懂npm i的命令以及作用
  • You don‘t have enough free space或者no space left on device异常
  • 饮料添加剂新型褪色光照试验仪器太阳光模拟器
  • ElasticSearch - 删除已经设置的认证密码(7.x)
  • 9.4 Go语言入门(运算符)
  • CLIP 源码分析:simple_tokenizer.py
  • AWS安全性身份和合规性之Shield
  • Midjourney入门篇 | 打造最逼真的照片(强烈推荐)
  • 【运维自动化-配置平台】如何跨业务转移主机
  • connection problem,giving up
  • Linux-----sed案例练习
  • 【华为OD机试-C卷D卷-200分】运输时间(C++/Java/Python)
  • flink程序本地运行报: A JNI error has occurred和java.lang.NoClassDefFoundError
  • yolox-何为EMA?
  • Java:String、StringBuffer和StringBuilder的区别