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

实业公司网站模板英文医疗网站建设

实业公司网站模板,英文医疗网站建设,html网站优化,代做毕设网站可信么目录 概念 声明和初始化 转换为共享指针 打破循环引用 弱指针使用警告 概念 在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.dnsts.com.cn/news/73416.html

相关文章:

  • 挂马网站现象seo基本步骤
  • 东莞网站制作建设公司单位做网站
  • 网站地图的使用做网站需要买服务器吗
  • 布吉做网站的公司巴中微小网站建设案例
  • 网站编程零基础入门wordpress 怎么设置
  • 淘宝购物返利网站建设app策划网站建设价格
  • 专业网站建设组织wordpress主题 导出
  • 给个网站2022年手机上能用的福建建设工程有限公司网站
  • 网络网站首页设计信息手机网站模板下载软件
  • 焦作北京网站建设装饰公司办公室图片
  • 哈市哪里网站做的好小程序制作推广
  • 如何学网站建设天津展示型网站建设外包
  • 建设银行个人网站常州工程交易网
  • 皇家梅陇公馆网站建设电子商务师证报考官网
  • 镇江网站建设咨询网站代理备案价格
  • 广州网站建设总结手机助手
  • 南宁专业网站制作前十排名网站建设销售培训
  • 模板网站合同昆明建设网站制作
  • 下载源代码的网站wordpress如何导入模板数据
  • 商城网站开发需要哪些人员手机怎么制作网站教程视频
  • 高端网站设计高端网站制作wordpress 微言插件
  • 南京一站式工程装饰装修网站婚纱摄影网页
  • 成功的企业网站案例快速搭建网站 数据存储
  • 代替做网站推广wordpress 上传 pdf
  • 前端开发做网站吗公司品牌flash网站设计
  • 百度wap网站建设陕西省城乡住房建设厅网站
  • 网站页面太多是否做静态做网站用什么框架好
  • 怎样添加网站地图网站版式有哪几种
  • 网站备案电话号码域名备案查询网
  • 请别人做网站游戏介绍网站模板下载地址