C++非局部使用变量时怎么避免使用值捕捉
发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,本篇内容介绍了"C++非局部使用变量时怎么避免使用值捕捉"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成
千家信息网最后更新 2025年02月04日C++非局部使用变量时怎么避免使用值捕捉
本篇内容介绍了"C++非局部使用变量时怎么避免使用值捕捉"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
如果捕捉的变量可以能被非局部使用,则应避免在lambda表达式中使用引用形式的捕捉。非局部使用包括返回,保存在堆中,或者传递给其他线程。
Reason(原因)
指向局部变量的指针和引用的生命周期不应该长于它们的作用域。通过引用捕捉变量的lambda表达式只是另外一个保存指向局部变量的引用的场所,如果这个lambda表达式(或拷贝)的生命周期超过作用域时不应该使用引用形式的变量捕捉。
Example, bad(反面示例)
int local = 42;
// Want a reference to local.
// Note, that after program exits this scope,
// local no longer exists, therefore
// process() call will have undefined behavior!
thread_pool.queue_work([&]{ process(local); });
Example, goodint local = 42;
// Want a copy of local.
// Since a copy of local is made, it will
// always be available for the call.
thread_pool.queue_work([=]{ process(local); });
Enforcement
(Simple) Warn when capture-list contains a reference to a locally declared variable
(简单)当捕捉列表中包含本地声明的变量时报警。
(Complex) Flag when capture-list contains a reference to a locally declared variable and the lambda is passed to a non-
const
and non-local context(复杂)在捕捉列表中包含指向局部声明的变量而且lambda表达式被传递给非常量或非局部上下文时做出提示。
"C++非局部使用变量时怎么避免使用值捕捉"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
变量
局部
表达式
指向
C++
作用
内容
周期
形式
更多
生命
知识
中包
复杂
实用
学有所成
接下来
上下
上下文
原因
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全同意模型
小米笔记本做软件开发怎么样
gtav无法连接到内容服务器
一般数据库开发主要做什么
毅博佳齐网络技术
测试连接数据库密码的命令
软件开发专业要学数学吗
服务器怎么获取管理员
服务器关闭uefi
数据库中的派是切莫意思
学校网络安全主题
软件开发项目进度表跟进明细表
dbc数据库如何批量修改
zdb格式数据库读取方式
明发国际app服务器在哪
长宁区品质软件开发费用是多少
网络安全靠人民该怎么做
莱西电商软件开发公司有哪些
易语言外部数据库如何连接
oppo网络安全设置在哪里
纪检网络安全自查报告
数据库为什么建表
江西服务器虚拟化定做
c 通信软件开发
软件开发与软件架构
安全软件开发攻略
世界第一家网络安全公司
淄博ios软件开发外包公司
网易服务器经常崩溃
国元证券软件开发岗位怎么样