关闭游戏功能界面,导致游戏闪退

问题演示

打开坐骑界面,切换到灵石分页,关闭界面
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

原因

Expression:vector iterators incompatible
动画名字标记重名
尝试向迭代器删除一个不存在的元素,相当于nil在delete()

正常来,应该先创建一个空白的主界面,然后根据标签切换,把要显示的界面内容显示在主界面上,每次切换会消耗前一个界面的动画对象,创建新界面的动画对象,这样就算重名也没有问题。

这个功能界面不是,主界面里面创建了坐骑动画对象在左侧显示,切换灵石界面又创建了一个新的坐骑动画,主界面坐骑动画是要等关闭按钮点击才会消耗,这时点击关闭按钮,先是消耗了灵石界面的动画,移除了这个界面的对象,然后移除主界面的对象,消耗主界面的动画对象。

创建一个动画,申请了一片内存,又创建一个动画,这是用的还是这片内存,同名这里相当于是同一个指针,消耗动画以后,释放内存一次,又释放一次,相当于同一块内存释放两次,这是有问题的

同一块内存释放两次:两个内置类型的指针指向同一块自由空间分配的内存,在对一个指针进行delete之后,其指向的内存也会被释放,若再对第二个指针进行delete,会造成自由空间破坏在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

解决

两种思路:
第一:让灵石界面的坐骑动画用主界面的灵石动画,改变代码逻辑,可能大改
第二:代价最小,最快,让其中动画名字改变
我选第二种,修bug最快,在代码不一定全是自己写的前提下,要找代价最小,时间花费最少的,因为这些功能都是策划已经验收过的,大改逻辑可能会有其他不可预估的bug,而且这个最快且一定对,就选它的吧。当然代码可以后期优化
在这里插入图片描述

成功演示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaoduangg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值