原则:临时对象不应该被 lambda 引用捕获,因为临时对象在它所在的语句结束就会被析构掉,只能采用值捕获。
当临时对象比较隐蔽时,我们就可能犯这个低级错误。本文介绍一类case:以基类智能指针对象的 const 引用为函数形参,并在函数内对该参数做引用捕获,然后进行跨线程异步使用。当函数调用者使用派生类智能指针作为实参时,此时派生类智能指针对象会向上转换为基类智能指针对象,这个转换是隐式的,产生的对象是临时对象,然后被 lambda 引用捕获,后续跨线程使用引发“野引用” core。
C++ lambda 引用捕获临时对象引发 coredump 的案例
未经允许不得转载:小狮博客 » C++ lambda 引用捕获临时对象引发 coredump 的案例
相关推荐
- AD 横向移动-LSASS 进程转储
- C#/.NET/.NET Core技术前沿周刊 | 第 41 期(2025年6.1-6.8)
- 现代 Python 包管理器 uv
- ArkUI-X与Android桥接通信之方法回调
- 商品中心—2.商品生命周期和状态的技术文档
- Benchmark论文解读:Evaluating the Ripple Effects of Knowledge Editing in Language Models
- WineHQ 发布的 Framework Mono 6.14 的这个特性对Windows Forms 用户来说肯定很感兴趣
- 不写一行代码 .NET 使用 FluentCMS 快速构建现代化内容管理系统(CMS)