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

深圳品牌网站策划红色php企业网站模板下载

深圳品牌网站策划,红色php企业网站模板下载,vs做asp网站,校园学生网站开发目录 概念 声明和初始化 转换为共享指针 打破循环引用 弱指针使用警告 概念 在UE C 中#xff0c;弱指针#xff08;TWeakPtr #xff09;也是一种智能指针类型#xff0c;主要用于解决循环引用问题以及在不需要强引用保证对象始终有效的场景下#xff0c;提供一种可…目录 概念 声明和初始化 转换为共享指针 打破循环引用 弱指针使用警告 概念 在UE C 中弱指针TWeakPtr 也是一种智能指针类型主要用于解决循环引用问题以及在不需要强引用保证对象始终有效的场景下提供一种可以获取对象访问权限的方式。与共享指针TSharedPtr 和共享引用TSharedRef 不同弱指针不会增加其所指向对象的引用计数这意味着它不会对对象的生命周期产生维持作用即不会阻止对象被销毁。 例如在一些复杂的对象关系结构中多个对象之间可能相互引用如果都使用强引用如 TSharedPtr 或 TSharedRef 很容易形成循环引用导致对象的引用计数永远无法降为 0从而造成内存泄漏。而弱指针可以在这种情况下参与对象的引用关系构建避免出现循环引用问题同时又能在对象仍然存在时有机会获取到对象的有效访问权限。 在访问弱指针引用的对象前应使用 Pin 函数生成共享指针。此操作确保使用该对象时其将继续存在。如只需要确定弱指针是否引用对象可将其与 nullptr 比较或在之上调用 IsValid。 声明和初始化 在如下代码中体现了弱指针不维持对象生命周期的特点以及通过 Pin 函数检查对象是否还能获取有效访问权限的用法。 在第16行代码中使用 MakeSharedFMyStruct() 创建了一个 FMyStruct 类型的对象并通过 TSharedRef 来管理这个对象使得 ObjectOwnerRef 指向新创建的对象。此时该对象的引用计数被初始化为 1。 第17行代码通过将 ObjectOwnerRef 作为参数传递给 TWeakPtr 的构造函数创建了一个弱指针 ObjectObserver使其指向与 ObjectOwnerRef 相同的 FMyStruct 对象。需要注意的是这个操作并不会增加对象的引用计数对象的生命周期仍然仅由 ObjectOwnerRef 以及后续可能出现的其他指向该对象的共享指针或共享引用来维持ObjectObserver 只是建立了一个对该对象的弱引用关系用于后续在不影响对象生命周期的情况下尝试获取对对象的访问权限。 第18行代码创建了一个 TSharedPtr 类型的共享指针 ObjectOwnerPtr并通过赋值操作让它也指向 ObjectOwnerRef 所指向的 FMyStruct 对象。此时对象的引用计数会从 1仅由 ObjectOwnerRef 维持时变为 2。 第19行代码调用 ObjectOwnerPtr 的 Reset 函数这会使得 ObjectOwnerPtr 释放对其所指向对象的强引用对象的引用计数会相应地减 1。在执行完这行代码后对象的引用计数变回 1仅由 ObjectOwnerRef 来维持其生命周期。 第20~23行代码使用了 弱指针ObjectObserver 的 Pin 函数来尝试获取一个指向原对象的临时共享指针以检查对象是否仍然可以被访问。Pin 函数会在对象仍然存在即对应的引用计数大于 0 的情况下返回一个指向该对象的临时 TSharedPtr。 转换为共享指针 Pin 函数将创建指向弱指针对象的共享指针。只要共享指针在范围内且引用对象则该对象将持续有效。 如下代码主要展示了如何将一个由共享引用TSharedRef 管理的对象转换为可通过弱指针TWeakPtr 来间接访问的形式并且演示了通过弱指针的 Pin 操作获取临时共享指针TSharedPtr 进而访问对象成员函数 PrintAA 的过程整体体现了弱指针在不影响对象生命周期管理的情况下实现对对象的安全访问机制。 打破循环引用 出现循环引用的示例 首先在“FMyStruct”结构体中定义一个共享指针 HoldPtr并初始化为 nullptr 然后创建两个 FMyStruct 类型的对象并通过它们各自包含的 TSharedPtrFMyStruct 类型成员变量 HoldPtr 互相指向对方形成了一个循环引用的结构如下所示。 此时调用“LoopPtr”会发现并没有输出析构的日志信息说明产生了循环引用现象导致对象的引用计数永远无法降为 0。 为了打破循环引用我们可以使用弱指针来代替共享指针 编译后运行 结果如下可以看到对象可以正常析构了 弱指针使用警告 如不想保证数据对象会持续存在时弱指针将非常有用但该属性可能会变得异常危险。在以下情况中请谨慎使用弱指针 **在Set或Map中用作键。弱指针可能会在未通知容器的情况下随时无效因此共享指针或共享引用更适用于充当键。可安全地将弱指针用作数值。 虽然弱指针提供 IsValid 函数但是检查 IsValid 无法保证对象在任何时间长度内均可持续有效。线程安全共享指针可能会因另一线程上的活动而随时无效因此使用线程安全共享指针应尤其注意。Pin 返回的共享指针将使对象在代码将其清除或其超出范围前保持活跃状态因此 Pin 函数是用于检查的首选方法此类检查会导致取消引用或访问存储对象。 官方文档地址 https://dev.epicgames.com/documentation/zh-cn/unreal-engine/shared-references-in-unreal-engine?application_version5.3
http://www.hkea.cn/news/14341832/

相关文章:

  • php 网站做分享功能有没有找项目的网站
  • 公司做企业网站的必要性海南州建设厅官方网站
  • 深圳专业网站开发公司wordpress备案号格式
  • 电子商务网站建设期末试题答案05个人博客网页制作模板田田田田田田田田田田
  • 云南网站制作案例公司网站建设 上海
  • 电子厂网站建设方案书怎么写顺德网站开发招聘
  • 大学学校类网站设计韩国设计app网站有哪些
  • 小组用jsp做的网站论文汕头代理注册公司
  • 做网站好公司手机端网站开发多少钱
  • 2018做网站用什么开发做雕塑网站找哪家好
  • 家用宽带怎么做网站 访问企业外贸营销型网站
  • 启动网站建设的请示企业备案网站名称要求
  • 网站设计公司 知道万维科技东莞网站建设制作
  • 如何做双语网站建筑企业登录哪个网站
  • 微网站建设市场专业制作网站价格
  • 自学软件网站开发芜湖网站制作公司
  • 桂林网站设计公司中国企业500强榜单2022
  • 豆瓣网站是怎么建设的上海外贸上市公司有哪些
  • 上海网站建设就q479185700顶上小游戏网站
  • 镇江市建设工程质量监督局网站机电建设有限公司网站
  • 域名经纪公司推荐广州seo网站管理
  • 野望赏析南昌搜索引擎优化
  • 织梦网站怎么加入引导页windows系统做网站
  • 旅游微网站分销net的电商网站建设
  • 宿迁网站建设报价商务网站建设过程
  • 在线一键扒站源码php网站建设与管理 pdf
  • 分销商城网站建设自己做的网站怎么调用百度地图
  • dreamviewer做网站投票网站怎么做
  • 做网站哪种编程语言最好小型创业项目
  • 网站运营服务商普通企业网站费用