跨平层开发之C++全局对象的析构导致的崩溃(IOS平台)

前言

如题是前段时间遇到并处理的BUG,解决方案是抄这位老哥的《深入解构iOS系统下的全局对象和初始化函数》中提到的方案—利用atexit机制注册资源回收,以及处理其它单例对象全局对象的依赖,特别是要处理工作线程的退出等等。参考资料也收集了几篇跟本主题相关的,建议大家也看看。
另外自己也有写了简单的示例《通过一个示例看全局对象的构造和析构以及atexit的使用》——展示全局对象的析构跟atexit的使用,大家可以参考之。
当时我们的SDK在实现上有一个全局对象,同时有些单例,还有独立的SDK工程线程之类的。当用户手动kill掉应用时,全局对象被析构后,工作线程还在运行,然后有相关的回调又调用到全局对象的成员,导致了Heap Corruption的崩溃

经验总结是:一个SDK或APP中的全局对象需要重点reiview,其它模块或对象对它的依赖情况,还有工作线程是否会调用到全局对象等,在应用退出时要停止线程,回收相关的资源,以及断开对全局对象的依赖

参考资料

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值