我正在构建一个iOS应用程序。它使用了一个C++库,它与cocos2d游戏一起运行(群组模拟库,它确定了许多智能体的位置)。
在我添加了更多的动画和额外的铃声和口哨后,应用程序在大约6-30秒后崩溃,错误如下: tiny_malloc_from_free_list tiny_free_list_remove_ptr
问题是,它总是发生在相同的内存地址0x1000。但我可以在两个不同的设备上精确地复制错误,所以不是内存本身不好。
我并不期待一个完整的答案,但一些我应该从哪里开始寻找的指针将是非常好的:)谢谢!
编辑:我完全删除了c++库,但错误仍然存在。一旦我接近了,我会更新的。
编辑:问题出在Cocos2d v.2的显示统计信息中,添加和删除指针。谢谢你的帮助!其中一个纹理枚举是1<<12,它被用作指针...我不再使用显示数据了。:)谢谢大家!
发布于 2012-07-11 15:34:21
假设您的回溯跟踪没有立即显示问题...
听起来它可能是一个nil "object",代码试图引用*(p + 0x1000)。请注意,0x1000可能是VM页面大小。
在这样的情况下,我打开僵尸并保护malloc,看看是否能在问题发生时发现它。
发布于 2012-07-11 15:34:01
有了这样的地址,我会怀疑在某个地方会有int到指针的转换。那是多少,4096?我可能会在库中搜索具有该值的常量(可能是通过位移位1<<12实现的),并查看是否可以以奇怪的方式找到使用该常量的代码。
https://stackoverflow.com/questions/11427608
复制相似问题