战魂小筑

讨论群:309800774 知乎关注:http://zhihu.com/people/sunicdavy 开源项目:https://github.com/davyxu

   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  249 随笔 :: 0 文章 :: 508 评论 :: 0 Trackbacks

最近将cocos2dx的程序移植到Android上, 某阶段突然发现开始闪退. 日志方式跟了很久, 发现有内存被修改. 因为不能像VC那样有内存断点, 只有靠日志继续跟踪, 绕了很久, 终于发现一个问题

CCApplication::sharedApplication()->run(); 在Windows下除了初始化回调外, 还有Windows平台特殊的消息循环. 既然是循环, 这个run函数会一直阻塞到程序退出, 因此我自然的在run后添加自己的资源卸载

换到Android上呢CCApplication::sharedApplication()->run();的实现变了. 由于Android上没有Windows的消息循环, 所有事件都是通过java方式的事件通知. 因此CCApplication::sharedApplication()->run();变成了非阻塞, 可是我在run后添加了资源卸载. 结果导致系统刚初始化就卸载了资源, 内存直接不可用, 导致后面cocos2dx的API部分使用无问题, 而自己引擎的API调用闪退.

cocos2dx的这个run函数命名有严重问题.. 被坑了好久, 还一直怀疑NDK内存管理是否有特殊之处, 殊不知..

posted on 2013-06-14 17:15 战魂小筑 阅读(7053) 评论(5)  编辑 收藏 引用 所属分类: 程序调试技术移动开发

评论

# re: 导致闪退的根源cocos2dx的平台实现大坑 2013-12-07 16:46
大侠,怎么解决的?  回复  更多评论
  

# re: 导致闪退的根源cocos2dx的平台实现大坑 2014-04-28 09:25 callee
是自己使用不当?  回复  更多评论
  

# re: 导致闪退的根源cocos2dx的平台实现大坑 2014-05-09 11:33 kizi2
Heroes, how to solve?  回复  更多评论
  

# re: 导致闪退的根源cocos2dx的平台实现大坑[未登录] 2015-06-25 15:01 小石头
哥,有专门游戏退出时的函数回调你不调,非要写在这  回复  更多评论
  

# re: 导致闪退的根源cocos2dx的平台实现大坑 2015-06-26 11:10 战魂小筑
@小石头
哥, 看懂了再回好吧, 那不是退出, 是接口和命名引起的误导  回复  更多评论
  


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理