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

C++:共享指针unique_ptr的理解与应用

指正指针unique_ptr

智能指针是C++11引入的新特性。对智能指针来说就有两条原则:

  1. 智能指针本身不能被动态分配,否则只能指针自身有无法被释放的风险,它所管理对象不能正确地被释放;
  2. 在栈上分配智能指针,让它指向堆上动态分配的对象,这样就能保证智能指针所管理的对象能够合理地被释放。

智能指针unique_ptr 具备“在适当时机自动释放堆内存空间”的能力。和指针shared_ptr最大的不同之处在于,指针unique_ptr指向的堆内存无法同其它指针unique_ptr共享,每个unique_ptr指针都独自拥有对其所指堆内存空间的所有权。这也说明每个指针unique_ptr指向的堆内存空间的引用计数,都只能为1,一旦该unique_ptr指针放弃对所指堆内存空间的所有权,则该空间会被立即释放回收。

智能指针unique_ptr是以模板类的形式提供的,unique_ptr<T>(T 为指针所指数据的类型)定义在<memory>头文件,并位于 std 命名空间中。

#include <memory>using namespace std;

创建智能指针unique_ptr

unique_ptr<T> 模板类提供了多个实用的构造函数。通过以下2种方式,

相关文章:

  • C++:虚函数与纯虚函数
  • SpringAI核心
  • Pr -- 耳机没有Pr输出的声音
  • 对比Redis与向量数据库(如Milvus)在AI中的应用
  • 6.3.2图的深度优先遍历
  • 配置tomcat时,无法部署工件该怎么办?
  • linux线程同步与互斥
  • 算法笔记·数学·最大公约数
  • 酷柚易汛ERP标签打印解决方案
  • [原创]X86C++反汇编01.IDA和提取签名
  • 为什么要使用线程池
  • 使用Python控制Arduino——入门与实战
  • IEC 60034-30-1标准解析:旋转电机能效分级与全球影响
  • LangGraph 及多agent
  • Netty学习专栏(四):如何解决粘包/拆包问题及自定义协议的实现
  • 嵌入大模型与LLM技术全面解析与实战指南
  • Day35打卡 @浙大疏锦行
  • 在Linux上安装Miniconda
  • 测试总结(一)
  • QML学习05MouseArea
  • 淘宝客网站建设视频教程/最大的推广平台
  • 做ppt的素材免费网站/seo运营
  • 山东省建设执业资格注册管理中心网站/知识营销
  • 金山网站制作/成都百度推广公司联系电话
  • 重庆网站建设备案/今日桂林头条新闻
  • 纯 flash 网站/网页推广怎么收取费用