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

C++ 科目二 智能指针 [weak_ptr] (解决shared_ptr的循环引用问题)

shared_ptr引入的重复计数问题,导致内存泄漏

using namespace std;
class CFather;
class CSon;class CFather {
public:CFather(){}void Set(shared_ptr<CSon> pson){Pson = pson;}shared_ptr<CSon> Pson;
};class CSon {
public:CSon(){}void Set(shared_ptr<CFather> pfather){Pfather = pfather;}shared_ptr<CFather> Pfather;
};int main()
{CSon *pson = new CSon();CFather *pfather = new CFather();{shared_ptr<CFather> shared_father(pfather);shared_ptr<CSon> shared_son(pson);shared_father->Set(shared_son);shared_son->Set(shared_father);cout << shared_father.use_count() << endl;cout << shared_son.use_count() << endl;}cout << "It's good to see you!" << endl;return 0;
}

将CFather或者CSon的shared_ptr变成weak_ptr即可避免内存泄漏问题

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

相关文章:

  • 解决RabbitMQ设置TTL过期后不进入死信队列
  • 【鸿蒙OH-v5.0源码分析之 Linux Kernel 部分】005 - Kernel 入口 C 函数 start_kernel() 源码分析
  • EndnoteX9安装及使用教程
  • SQL:子查询
  • C语言刷题日记(附详解)(5)
  • 开源加密软件简介
  • 【C++学习】 IO 流揭秘:高效数据读写的最佳实践
  • C#使用TCP-S7协议读写西门子PLC(五)-测试程序
  • 经验——IMX6UL的uboot无法ping主机或Ubuntu
  • AUTOSAR-规范文档版本
  • 网络(四)——HTTP协议
  • comfyui中报错 Cmd(‘git‘) failed due to: exit code(128) 如何解决
  • 测试-Gatling 与性能测试
  • ESRGAN——老旧照片、视频帧的修复和增强,提高图像的分辨率
  • 跨界融合:EasyDSS+无人机视频直播推流技术助力行业多场景应用
  • Linux实操笔记2 Ubuntu安装Nginx的不同方法
  • QCustomPlot笔记(一)
  • 【机器学习】多模态AI——融合多种数据源的智能系统
  • QT学习与数据库连接
  • 泛读笔记:从Word2Vec到BERT
  • redis实现分布式锁详细教程,可续锁(看门狗)、可重入
  • 代码随想录打卡Day32
  • 数学学习记录
  • R语言统计分析——散点图1(常规图)
  • 蓝桥杯—STM32G431RBT6按键的多方式使用(包含软件消抖方法精讲)从原理层面到实际应用(一)
  • 基于STM32的温度、电流、电压检测proteus仿真系统(OLED、DHT11、继电器、电机)
  • Linux - iptables防火墙
  • 【C语言零基础入门篇 - 3】:格式化输入输出、字符操作和sizeof运算符揭秘
  • JVM字节码与局部变量表
  • Java许可政策再变,Oracle JDK 17 免费期将结束!