首页 > 编程语言 >【C++】智能指针

【C++】智能指针

时间:2022-09-02 09:24:02浏览次数:65  
标签:指向 计数 2522% C++ 智能 shared ptr 指针

这篇讲得很好

https://blog.csdn.net/sjp11/article/details/123899141?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166201751616781790748003%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=166201751616781790748003&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-123899141-null-null.142^v44^new_blog_pos_by_title&utm_term=%E6%99%BA%E8%83%BD%E6%8C%87%E9%92%88&spm=1018.2226.3001.4187

 

要点:

auto_ptr:同时只能允许一个指针指向一块内存区域,比如p1指向a,此时如果让p2也指向a,那么p1就会自动至nullptr,所以有访问空指针的风险

unique_ptr:独享,禁止使用拷贝和赋值

shared_ptr:允许多个指针同时指向一块内存,通过维护一个引用计数的方式实现,每有一个指针指向同一块内存,引用计数就+1,每取消一个指针指向同一块内存,引用计数就-1,在最后一个指针释放的时候引用计数减为0,此时才会真正释放那块内存

shared_ptr会出现循环引用的问题,比如双向链表中的两个结点

weak_ptr:解决了shared_ptr的不足,它可以指向shared_ptr指向的对象,但不会对引用计数产生影响

删除器:

标签:指向,计数,2522%,C++,智能,shared,ptr,指针
From: https://www.cnblogs.com/jiayu-code/p/16648624.html

相关文章

  • 35 | JAVA中的Collections(类似C++中的算法)
    CollectionsCollections是JDK提供的工具类,同样位于java.util包中。它提供了一系列静态方法,能更方便地操作各种集合。注意Collections结尾多了一个s,不是Collection!我们一......
  • 23 | JAVA集合简介(C++容器)
    集合简介C++中将容器分成三类:顺序、关联、hash。容器在JAVA中映射为集合。等号左边(接口)等号右边(实现)ListArrayList/LinkedListSetHashSet/TreeSet......
  • 让人工智能和数据解决方案在商业中发挥作用:金融服务中的数字化转型
    让人工智能和数据解决方案在商业中发挥作用:金融服务中的数字化转型人工智能和机器学习数据是我们一直听到的两个话题。数字化(Covid-19大大加速了它)对人工智能在智能数字......
  • C++左值、右值引用
    概念左值与右值是相对于赋值运算符(=)与累加运算符(+=),以下内容统称为运算符。左值:存放于运算符左边的值,凡是能取地址(&)都是左值。右值:存放于运算符右边的值,不能取地址(&)都是......
  • C/C++中的自增自减运算符的前置后置问题
    前言在准备秋招的过程中,遇到双指针问题,发现自增自减运算符的前后置对于问题的解决有很大的影响,故写此文作为总结,方便后续查阅。正文一、前置后置的区别自增自减操作符......
  • c++常量引用容易踩的坑,修改数据不同步
    正常情况下被引用的对象改变,常量引用的值也跟着改变。i和j是同一个对象,所以是同步的:inti=42;constint&j=i;i=43;cout<<j<<endl;cout<<i<<endl;//......
  • 数组&指针
    分类inta;int*a;int**a;inta[10];int*a[10];int(*a)[10];//一个指向有10个整型数数组的指针int(*a)(int);//一个指向函数的指针,该函数有一......
  • C++ 打印杨辉三角/贾宪三角/帕斯卡三角
    #include<iostream>#include<iomanip>#include<windows.h>#include<fstream>#include<string>usingnamespacestd;#defineN10intmain(){inta[N][N......
  • C++正则匹配字符串
    以下实例使用C++正则从一串混乱的字符串中匹配带小数点的数字点击查看代码#include<iostream>#include<regex>usingnamespacestd;intmain(){smatchres......
  • 【人工智能】卷积神经网络
    用CNN实现离散数据的分类(以图像分类为例子)感受野感受野(ReceptiveField):卷积神经网络各输出特征图中的每个像素点,在原始输入图片上映射区域的大小全零填充目的:希望卷......