V
主页
京东 11.11 红包
【C++ STL】小彭老师带你手搓智能指针:shared_ptr(简介有源码链接)
发布人
小彭老师C++实战演练系列之“自己实现所有STL容器”。比起艰深的STL源码解读,不如自己动手实现STL,更能生动直观地掌握底层技术细节,破除模棱两可心理,了解常见的最佳实践。这是本系列试水的第八课,自己实现std::shared_ptr智能指针。本期视频中我们介绍了如何借助引用计数器实现多个智能指针共享同一个资源,延长生命周期直到最后一份引用也已销毁才析构指向对象,并实现了自动释放资源的效果。通过实际操作,我们理解了为什么shared_ptr必须额外创建一个独立的管理块,也了解到make_shared合并内存分配的原理。介绍了shared_ptr将deleter类型擦除的优势,还看穿了shared_ptr所谓线程安全的实质:只有计数器是原子的。同时介绍了如何借助CRTP模板类std::enable_shared_from_this实现从this裸指针转换为shared_ptr智能指针的功能。最终,借助所学知识,实现了和标准库一样的共享型智能指针:std::shared_ptr。由于篇幅限制,暂时还没有实现weak_ptr和intrusive_ptr,以后有时间再来填坑。 手搓STL系列课程全套代码均已开源:https://github.com/parallel101/stl1weekend
打开封面
下载高清视频
观看高清视频
视频下载器
C++全体STL容器语法毕业课、温习课(map、set、堆、栈、队列、vector、pair、哈希表、lower_bound、unique)
【C++】从零搭建聊天服务器(面试加分必备实战项目)
【C++】算法竞赛常用 STL 用法
【性能优化】往数组里写入0为何比写入1更快?详解缓存的工作机制
【C++公开课】全面理解STL标准库 vector容器 精讲(第1集 持续更新中)
【C++11】自己动手实现unique_ptr智能指针,都有哪些难点?
【并行计算】CUDA在现代C++中如何运用?看这一个就够了!
【公开课】现代OpenGL保姆级课程,从零开始打造3D游戏引擎(第一集,持续更新中)
【C++】malloc/new追踪,可视化内存碎片,监测内存泄漏
【公开课】现代CMake高级教程(持续更新中)
【公开课】现代OpenGL保姆级课程,从零开始打造3D游戏引擎(第三集:OBJ格式三维模型的加载与相机视角控制)
【C++项目实战】实现一个JSON解析器
【C++17】小彭老师陪你从零手搓HTTP服务器
【C++ STL】手搓红黑树有多困难?自制标准库系列之map与set(最难的一集)
【GCC】C/C++初学者建议开启这些警告,编译期就排除大量危险隐患,提升代码质量
【C++标准库】自己动手实现vector容器
【现代C++】静态反射实现自动JSON序列化
【manim】动画演示SSE指令集SIMD intrinsics(第一期)
【C++20】从0开始自制协程库,有手就行(上)
还在用rand生成随机数?来学学【现代C++】的正确用法吧!
【公开课】现代CMake模块化项目管理指南【C/C++】
【错误码】现代C++中的错误处理方案有哪些?
【C++辟谣】inline关键字的作用是“内联优化”?你可能是谭浩强的受害者!inline真正的用途是...
【C++20工程实战】自己动手实现纯头文件日志库
【C/C++】什么情况下需要封装get/set
【C/C++进阶】宏函数实用指南
【C++11】内存序究竟是什么,彻底参悟C++内存模型(附多线程安全测试通用框架)
【C++11】多线程安全如此简单
【公开课】第02讲:RAII与智能指针
【C++/OpenGL】三体运动物理仿真
【C++面试100问】第九十九问:char*和char[]的区别是什么
【C++11】测试代码性能(执行时间)的正确姿势
被双笙子佯谬拉黑了。4寸屏幕扣了好久的字
WSL没有图形界面?快速搭建Python和C++开发环境
【录播】现代C++中的高性能并行编程与优化(持续更新中)
【公开课】从零开始打造3D游戏引擎(第四集:GLSL 着色器语言入门与顶点属性管理)
现代C++教程 2023
【C++11】区分左值、亡值、纯右值,及他们的引用
【C++20】基于协程的简易HTTP服务器(下)
【C++源码分析】微信二维码闪退,深扒源码后,竟发现远不止这一处bug!