跳转到正文
Zhou 的博客
搜索文章
首页/文章

静态成员变量持有Slate的Shared智能指针造成UE编辑器退出时崩溃

playerzhou··约 1 分钟

问题

  • 退出编辑器时析构Slate对象时触发崩溃

原因

  • 通过崩溃堆栈发现,析构该Slate对象的时间点是发生在一个单例类A的析构函数时,该单例类A使用Shared智能指针持有Slate对象,而析构时该Slate对象会访问另一个单例类B,此时B已经失效,造成崩溃
  • 由于全局变量的析构顺序并不固定,因此A和B的析构顺序并不固定,而Shared智能指针使得在A析构前,A持有的Slate对象不会析构,若B在A之前析构,Slate对象的析构又依赖于B,就会造成崩溃

解决方案

  • 使用WeakPtr代替SharedPtr

感谢阅读

漂流瓶留言 0

留下一只漂流瓶

邮箱地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据。

背景音乐DANA

准备播放

歌单与设置
0:00

DANA / イースVIII -Lacrimosa of DANA- オリジナルサウンドトラック [完全版] / Copyright © Nihon Falcom Corporation

音乐使用规范 ↗

你好,欢迎来访。

丹娜 · Iclucian
↑