我正在构建一个iOS应用程序。它使用了一个C ++库(人群模拟库,它决定了许多代理商的位置)和cocos2d游戏。
在我添加了更多动画和额外的铃声和口哨后,应用程序在大约6-30秒后崩溃,出现以下错误: tiny_malloc_from_free_list tiny_free_list_remove_ptr
问题是,它总是发生在相同的内存地址0x1000。但是我可以准确地在两个不同的设备上复制错误,所以不是内存本身就不好。
我不期待一个完整的答案,但是我应该开始寻找的地方的一些指示会非常好:)谢谢!
编辑:我完全删除了c ++ lib,但错误仍然存在。一旦我靠近,我会更新。
编辑:问题出在Cocos2d v.2显示统计数据中添加和删除指针。谢谢你的帮助!其中一个纹理枚举值是1 <&lt;&lt; 12并且用作指针......我停止使用显示统计数据。 :)谢谢大家!
答案 0 :(得分:1)
有了这样的地址,我会怀疑某处的int-to-pointer转换。那是什么,4096?我可以在库中搜索具有该值的常量(可能通过位移1&lt;&lt; 12来实现),并且看看我是否能够以奇怪的方式使用该常量找到代码。
答案 1 :(得分:1)
假设你的回溯没有立即显示问题...
听起来它可能是一个零“对象”的尊重,代码试图引用*(p + 0x1000)。请注意,0x1000可能是VM页面大小。
在这样的情况下,我打开僵尸并保护malloc,看看我是否能够解决问题。