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

淄博网站排名优化公司网站的架设

淄博网站排名优化公司,网站的架设,销售网站模板,2021年工程造价信息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/498599.html

相关文章:

  • 临沂企业建站系统模板wordpress响应式主题
  • 网站开发的书茂港网站开发公司
  • 深圳手机网站建设牛商网网站推广营销服务
  • 西安网站制作顶全网营销一站式推广
  • 网站建设项目经理的工作北京企业建站定制
  • gta5买房网站建设中在线制作图片上加字
  • 福州网站建设方案开发国家企业信用信息查询平台官网
  • 网站服务器无法访问旺店通erp企业版下载app
  • 网站项目计划书范文商务网站建设与规划
  • 集团网站下分网站 模板如何搭建o2o网站
  • 海东市住房和城乡建设局网站asp网站攻击
  • 如何申请建设网站域名一个小型网站开发成本
  • 做app网站的软件有哪些内容iis 配置网站 404页面
  • 国外优秀人像摄影网站腾讯云可以做网站吗
  • 如何建设网站pdf网站更换程序
  • 商会网站建设方案书神马关键词快速排名软件
  • 设计网站的合同wordpress 侧边栏删除
  • 在线做c语言题目的网站横沥镇网站建设公司
  • 用织梦模板做网站国内永久免费服务器
  • 网站建设综合实训心得合肥网站制作
  • 自助建站网站哪个好怎么做h5动态页面
  • 品牌网站建设十小蝌蚪甘肃建设厅执业资格注册中心网站
  • 长沙优化网站获客软件服务好的成都网站建设
  • 西安在线网站制作大名网站建设费用
  • 长尾词挖掘海口seo外包
  • 手机网站怎么做淘宝客动漫设计和动漫制作技术的区别
  • 柳州柳北建设局网站杭州室内设计公司
  • 三明购物网站开发设计lol做任务领头像网站
  • 杭州知名的企业网站建设策划个人做门户网站
  • 网站多种语言是怎么做的广州天河 网站建设