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

智能指针shared_ptr简介及小例子

shared_ptr是一种智能指针,用于处理动态分配的对象。它提供了一种引用计数的机制,当没有任何其他shared_ptr指向一个对象时,该对象将被自动删除。

shared_ptr的作用类似于常规指针,但有一些额外的功能。它能够记录有多少个shared_ptr共享同一个对象,这是通过引用计数实现的。当创建一个新的shared_ptr指向一个对象时,引用计数会增加;当一个shared_ptr被销毁或重置时,引用计数会减少;当引用计数为0时,该对象的内存将被自动释放。

shared_ptr是线程安全的,多个线程可以共享同一个shared_ptr对象,而不会导致数据竞争或不一致的状态。然而,如果多个shared_ptr指向同一个对象,并且这些shared_ptr在多个线程中被修改或销毁,则需要进行适当的同步以确保数据的一致性和正确性。

下面是一个简单的示例,展示了如何使用shared_ptr:
 

#include <iostream>  
#include <memory>  class MyClass {  
public:  MyClass(int value) : value_(value) {std::cout<<"MyClass 构造函数"<<std::endl;}  void printValue() { std::cout << "show "<<value_ << std::endl; }  
private:  int value_;  
};  int main() {  std::shared_ptr<MyClass> ptr1 = std::make_shared<MyClass>(42); std::cout << "1111111111"<< std::endl; std::shared_ptr<MyClass> ptr2 = ptr1;  ptr1->printValue();  // Output: 42  ptr2->printValue();  // Output: 42  ptr2.reset();  // ptr2->printValue(); ptr1->printValue();  // Output: 42  ptr1.reset();  // At this point, the object pointed to by ptr1 and ptr2 is deleted.  return 0;  
}

MyClass 构造函数
1111111111
show 42
show 42
show 42

在上面的示例中,我们创建了两个shared_ptr,它们指向同一个MyClass对象。当我们使用printValue()方法时,可以看到输出是42。然后,我们销毁了ptr2,但因为还有ptr1指向该对象,所以该对象不会被删除。最后,我们销毁了ptr1,此时引用计数变为0,该对象被自动删除。
 

相关文章:

智能指针shared_ptr简介及小例子

shared_ptr是一种智能指针&#xff0c;用于处理动态分配的对象。它提供了一种引用计数的机制&#xff0c;当没有任何其他shared_ptr指向一个对象时&#xff0c;该对象将被自动删除。 shared_ptr的作用类似于常规指针&#xff0c;但有一些额外的功能。它能够记录有多少个shared…...

机器人精确移动包

move_near 之前有写过, 将ROS官方的move_basic包改写成了python形式, 同时将它写成了一个完整的action接口 最近测试时发现了问题, odom的数据波动可能会导致机器人陷入正反馈从而一直移动 具体表现为: 机器人移动精度设置为0.005 [m] 机器人在移动到接近0.005的位置, odom…...

强化学习环境报错解决

问题&#xff1a;nameerror: name ‘glpushmatrix‘ is not defined 解决&#xff1a;更换pyglet包的版本。pyglet2.0a4会报这个错误&#xff0c;把版本换成pyglet1.5.27即可。 问题&#xff1a;安装了gym和ale-py但是还是找不到模型&#xff0c;报错ModuleNotFoundError: No…...

Ganache本地测试网如何在远程环境中进行访问和操作

文章目录 前言1. 安装Ganache2. 安装cpolar3. 创建公网地址4. 公网访问连接5. 固定公网地址 前言 Ganache 是DApp的测试网络&#xff0c;提供图形化界面&#xff0c;log日志等&#xff1b;智能合约部署时需要连接测试网络。 Ganache 是一个运行在本地测试的网络,通过结合cpol…...

Kotlin中的函数分类(顶层、成员、局部、递归等)

在 Kotlin 中&#xff0c;函数可以按照不同的方式进行分类。在本篇博客中&#xff0c;我们将介绍以下几种常见的函数分类&#xff0c;并提供示例代码进行演示。 顶层函数&#xff1a; 顶层函数是指定义在文件中的函数&#xff0c;不依赖于任何类或对象。它们可以在文件的任何…...

字符串排序程序

字符串排序程序&#xff0c;对一个字符串中的数值进行从小到大的排序 例如排序前给定的字符串为" 20 78 9 -7 88 36 29" 排序后&#xff1a; -7 9 20 29 36 78 88 要求使用包装类对数值类型的字符串转换成整型进行排序。 public class StringSort {public static vo…...

功率放大器在材料测试中的应用有哪些

功率放大器在材料测试中有广泛的应用&#xff0c;尤其在材料的物理、电子和热学性质等方面的研究中起到了重要的作用。下面Aigtek安泰将详细介绍功率放大器在材料测试中的一些主要应用。 电学特性测试&#xff1a;功率放大器用于材料的电学特性测试&#xff0c;如电导率、介电常…...

汽车屏类产品(一):流媒体后视镜Camera Monitoring System (CMS)

前言: CMS,有叫电子侧视镜,虚拟倒车镜,电子倒车镜, 电子取代镜等,ISO 国际标准组织称其为摄像头监控系统。电子后视镜由“摄像头+屏幕”组成,汽车外后视镜经历了光学镜面从平面镜到曲面镜的迭代进步,CMS也实现从商用车到乘用车的过渡。显示模式为外部摄像头采集图像,…...

三元组(C++ 实现矩阵快速转置)

三元组稀疏矩阵是一种高效存储稀疏矩阵的方法。它通过记录矩阵中非零元素的行、列和值来表示一个稀疏矩阵。我们在三元组里存储的是每个元素的行、列以及值。 题目&#xff1a; 任意输入一个稀疏矩阵M&#xff0c;用三元组顺序表压缩存储该稀疏矩阵M&#xff0c;然后求其转置矩…...

Apriori(关联规则挖掘算法)

关联规则分析 事务库 上表所示的购物篮数据即是一个事务库&#xff0c;该事务库记录的是用户行为的数据。 事务 上表事务库中的每一条记录被称为一笔事务。在购物篮事务中&#xff0c;每一次购物行为即为一笔事务&#xff0c;例如第一行数据“用户1购买商品A,B,C”即为一条事…...

new Object()到底占用几个字节

Java内存模型 对象内存中可以分为三块区域&#xff1a;对象头(Header)&#xff0c;实例数据(Instance Data)和对齐填充(Padding)&#xff0c;以64位操作系统为例(未开启指针压缩的情况)Java对象布局 如下图所示&#xff1a; 其中对象头中的Mark Word中的详细信息在文章synchr…...

瞬态抑制二极管TVS的工作原理?|深圳比创达电子EMC(上)

TVS二极管具有响应速度快、漏电流小、钳位电压稳以及无寿命衰减的特性&#xff0c;从小到信号线静电防护&#xff0c;大到电力系统抗雷击浪涌&#xff0c;TVS都发挥着至关重要的作用。本章对瞬态抑制二极管TVS工作机理展开分析&#xff0c;供产品选型参考。接下来就跟着深圳比创…...

Nginx 同一端口 同时支持http与https 协议

文章目录 需求分析 需求 通过 nginx &#xff0c;让同一端口 同时支持http与https 协议 分析 通过使用 Nginx&#xff0c;可以实现同一端口同时支持 HTTP 和 HTTPS 协议。下面是一种可能的配置方式&#xff1a; 配置 HTTP 服务 在 Nginx 配置文件中&#xff0c;添加以下配置…...

【Express】文件上传管理 multer 中间件

Multer是Node.js中用于处理文件上传的中间件。它可以帮助你处理文件上传的相关逻辑&#xff0c;如接收和保存上传的文件、限制文件大小、设置文件类型限制等。只能用于处理 multipart/form-data 类型的表单数据&#xff0c;它主要用于上传文件。 下面是使用Multer中间件的基本…...

性能监控软件是什么?有哪些优势?

在现代科技驱动的世界中&#xff0c;计算机系统的性能对于企业和个人用户都至关重要。性能监控软件是一种不可或缺的工具&#xff0c;可以帮助我们实时跟踪、分析和优化系统的性能。本文将介绍性能监控软件的概念、其重要性以及如何选择和使用这些工具来提高系统效率。 一、性能…...

分布式事务及CAP和BASE顶底

一、分布式事务 单体应用肯定就不存在分布式事务了&#xff0c;只有在分布式微服务系统中&#xff0c;各个服务之间通过RPC调用后&#xff0c;每个微服务有自己和数据库的连接&#xff0c;各个微服务的回滚不影响其他的微服务事务&#xff0c;这几必须使用分布式事务来解决分布…...

Django REST Framework完整教程-认证与权限-JWT的使用

文章目录 1.认证(Authentication)与权限(Permission)1.1.视图添加权限1.2.登录验证1.3.常用DRF自带权限类1.4.自定义权限类1.5.全局权限1.6.函数视图权限 2.认证详解2.1.认证方案2.2.如何使用TokenAuthentication&#xff1f; 3.JSON Web Token(JWT)认证3.1.工作原理3.2.安装3.…...

领域内容第18名

恭喜入榜...

[1024]程序员节 一晃6年过去了

加入开发者大军&#xff0c;一晃已是6年有余&#xff0c;从最初的Andoird开发如火如荼&#xff0c;到现在的秋风萧瑟&#xff0c;宛如被秋风吹得只剩躯干的树木&#xff0c;等待来年的焕发新芽。 我本不是一个科班出身的开发者&#xff0c;但是为了生活&#xff0c;说白了为了钱…...

数据结构 | 构造哈夫曼树

template<class T> void Heap<T>::PercolateUp() //为了向上调整为堆&#xff0c;我们需要比较当前节点和其父节点的值&#xff0c;如果父节点的值比当前节点大&#xff0c;则交换它们的值。 { int p size - 1, c (p - 1) / 2;//c表示当前节点的父节点&#xff0…...

PPSSPP模拟器:这款安卓psp模拟器如何让你在手机上畅玩PSP经典游戏

还记得小时候躲在被窝里玩《怪物猎人》《战神》《最终幻想》的日子吗&#xff1f;那台黑白相间的PSP掌机承载了无数人的青春回忆。如今&#xff0c;PSP早已停产&#xff0c;但那些经典游戏并没有消失——只要你有PPSSPP模拟器&#xff0c;就能在手机、电脑甚至平板上重新体验它…...

突破语言壁垒:双字节字符支持的创新解决方案——零基础也能掌握的《十字军之王II》本地化增强工具

突破语言壁垒&#xff1a;双字节字符支持的创新解决方案——零基础也能掌握的《十字军之王II》本地化增强工具 【免费下载链接】CK2dll Crusader Kings II double byte patch /production : 3.3.4 /dev : 3.3.4 项目地址: https://gitcode.com/gh_mirrors/ck/CK2dll 你是…...

广州创科助力南水水电站安全监测自动化升级

南水水电站位于广东韶关乳源&#xff0c;其大坝建于1958年&#xff0c;是目前世界上唯一仍在运行的定向爆破粘土斜墙堆石坝&#xff0c;曾获1978年全国科学大会科技成果奖&#xff0c;在我国水利建设史上具有里程碑意义。电站总库容12.84亿立方米&#xff0c;为韶关约130万人口…...

无需编程经验!OFA图像描述工具开箱即用,支持本地离线运行

无需编程经验&#xff01;OFA图像描述工具开箱即用&#xff0c;支持本地离线运行 1. 前言&#xff1a;为什么选择本地图像描述工具 想象一下这些场景&#xff1a; 你在整理旅行照片时&#xff0c;想快速为每张图添加英文描述工作中需要批量处理商品图片&#xff0c;但担心上…...

PyTorch-2.x-Universal-Dev-v1.0镜像详解:预装库、国内源、GPU验证全攻略

PyTorch-2.x-Universal-Dev-v1.0镜像详解&#xff1a;预装库、国内源、GPU验证全攻略 1. 镜像概述与核心优势 PyTorch-2.x-Universal-Dev-v1.0镜像是一个专为深度学习开发者打造的高效开发环境。它基于官方PyTorch底包构建&#xff0c;经过精心优化和配置&#xff0c;旨在解决…...

otp:Go语言一次性密码库入门指南 - 5分钟快速上手双因素认证

otp&#xff1a;Go语言一次性密码库入门指南 - 5分钟快速上手双因素认证 【免费下载链接】otp TOTP library for Go 项目地址: https://gitcode.com/gh_mirrors/otp/otp 在当今网络安全威胁日益严峻的环境下&#xff0c;一次性密码&#xff08;OTP&#xff09;已成为保护…...

给SoC新手的保姆级指南:手把手用Verilog实现一个APB总线读写控制器

给SoC新手的保姆级指南&#xff1a;手把手用Verilog实现一个APB总线读写控制器 第一次接触AMBA总线时&#xff0c;那些密密麻麻的时序图总让人望而生畏。作为ARM公司设计的片上总线标准&#xff0c;APB(Advanced Peripheral Bus)以其简单的两相握手协议成为初学者理解总线通信的…...

OpenClaw新手避坑指南:这10个Skills装不对,生产力直接归零(附安装命令)

OpenClaw新手避坑指南&#xff1a;这10个Skills装不对&#xff0c;生产力直接归零&#xff08;附安装命令&#xff09; 文章目录OpenClaw新手避坑指南&#xff1a;这10个Skills装不对&#xff0c;生产力直接归零&#xff08;附安装命令&#xff09;写在前面&#xff1a;为什么你…...

[Android] 故宫陶瓷馆 v2.2.251126

[Android] 故宫陶瓷馆 v2.2.251126 链接&#xff1a;https://pan.xunlei.com/s/VOpHzrBozQgvaUJbdCkB20SMA1?pwdu338# 故宫陶瓷馆是故宫博物院官方出品的APP&#xff0c;以“时间轴”为核心骨架、全新技术手段打造的陶瓷馆&#xff0c;为你将展品带至手中、带至眼前。...

基于SpringBoot + Vue的莱元元电商数据分析系统(双端 + 数据可视化大屏)

文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例结语前言 &#x1f49b;博主介绍&#…...