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

浪琴手表网站建设图安徽平台网站建设制作

浪琴手表网站建设图,安徽平台网站建设制作,北京网页设计新趋势,冲浪网站优化网std::weak_ptr 是 C 中与 std::shared_ptr 配合使用的智能指针,它本身不拥有资源的所有权,仅观察资源的状态,主要用于解决 shared_ptr 的循环引用问题和临时访问共享资源的需求。以下是 weak_ptr 的典型应用场景和核心价值:![ 为…

std::weak_ptr 是 C++ 中与 std::shared_ptr 配合使用的智能指针,它本身不拥有资源的所有权,仅观察资源的状态,主要用于解决 shared_ptr 的循环引用问题和临时访问共享资源的需求。以下是 weak_ptr 的典型应用场景和核心价值:![
](https://i-blog.csdnimg.cn/direct/266d0d62722f4a1ca9ed616d8535a16a.png)
在这里插入图片描述

在这里插入图片描述

为什么缓冲不能返回unique ptr

在缓存场景中,比如一个ImageCache类,缓存需要保存某个资源(比如图像)的指针,以便后续请求时可以直接返回,而不需要重新加载。如果使用unique_ptr,当缓存将unique_ptr返回给调用者时,所有权会被转移,缓存本身就不再拥有该资源,导致下一次请求同一资源时无法再次提供,因为unique_ptr已经被移动走了。这显然不符合缓存的需求,因为缓存需要保留资源以便多次访问。

相反,如果使用shared_ptr,缓存可以保存一个shared_ptr,**每次请求时返回一个新的shared_ptr副本,这样引用计数会增加,当调用者不再需要时,引用计数减少,但缓存仍然保留一个引用,**直到所有使用者都释放后,资源才会被销毁。这样缓存可以多次提供同一资源,直到资源不再被任何地方引用为止。

另外,用户之前的问题提到weak_ptr的使用场景,比如缓存中保存weak_ptr,当需要时通过lock()方法升级为shared_ptr。这样可以避免缓存本身阻止资源的释放,**当所有外部shared_ptr都销毁后,缓存中的weak_ptr会自动失效,这样资源可以被正确释放,**而不会因为缓存的存在导致内存泄漏。这也说明在缓存中使用unique_ptr是不可能的,因为unique_ptr无法共享所有权,而缓存需要某种方式保留资源的引用,或者在适当的时候释放。

class ImageCache {
private:std::unordered_map<int, std::weak_ptr<Image>> cache; // 正确:存储 weak_ptrpublic:std::shared_ptr<Image> load(int id) {auto it = cache.find(id);if (it != cache.end()) {if (auto img = it->second.lock()) { // 尝试升级为 shared_ptrreturn img; // 缓存命中,返回共享资源}}// 缓存未命中,加载并存储auto img = std::make_shared<Image>(id);cache[id] = img; // 存入 weak_ptrreturn img;}
};

. 何时使用 unique_ptr?

unique_ptr 适用于以下场景:

明确单一所有权:如工厂模式返回资源,资源由单一模块管理。

性能敏感场景:避免引用计数的开销。

资源明确释放:例如 RAII 管理文件句柄或锁。

在类似树的严格继承数据结构中 子节点只被父节点拥有 父节点到子节点链接可以用unique 而子节点到父节点可以用裸指针, 这样不会有问题 请举例说明。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
auto child = std::make_unique(this); 什么意思? 什么时候内存分配的。是在堆上还是在哪里?
td::make_unique`在调用时立即分配内存并构造对象,所以当这行代码执行时,TreeNode的构造函数会被调用,内存分配和初始化都在此时完成。

shared 不能这么直接使用this, 裸指针。

http://www.dtcms.com/a/538050.html

相关文章:

  • C++小协程栈和临时变量及作用域的栈溢出问题分析
  • Nacos配置中心动态刷新全解析:配置中心核心概念与架构
  • RL-100:基于现实世界强化学习的高性能机器人操作
  • ubuntu22.04配置MID360激光雷达
  • 免费制作软件app的网站胶州网站建设 网络推广
  • vs2017网站开发建设一个门户网站价格
  • 泰和县网站免费建站家具定制东莞网站建设
  • 构建时变量注入:Vite 环境下 SCSS 与 JavaScript 的变量同步机制
  • 前端性能优化全流程指南:策略、工具与实践案例
  • 玉林市建设工程交易中心网站金泉网做网站推广
  • 青海省住房城乡建设厅网站首页企业建站免费模板
  • 亚马逊重磅推出Blue Jay仓库机器人,智能仓储再升级
  • 【机器学习】监督学习
  • 怎么做类似美团的网站吗2345网址导航浏览器下载
  • 【GaussDB】在duckdb中查询GaussDB的数据
  • 当下网站建设wordpress 页面名称
  • 江西省住房和城乡建设厅的网站软文范例大全200字
  • 中国建设银行网站官网网址备案掉了网站会怎样
  • 网站制作方案在哪找长沙人才招聘网站
  • 数据结构与算法-3元组
  • 上传网站模板做本地网站能赚钱么
  • 手机建个人网站如何做网站美工
  • PatchCore 异常检测算法的原理
  • opencart网站搜索引擎营销成功的案例
  • 从零开始的C++学习生活 16:C++11新特性全解析
  • 单位门户网站建设方案初创公司 建网站
  • wordpress建站位置课件ppt模板免费下载
  • maven的基本概念与使用
  • 大良招聘网站建设天眼查企业查询入口
  • 如何在互联网推广自己的产品seo和网络推广哪个好