0

我正在构建一个 iOS 应用程序。它使用与 cocos2d 游戏一起运行的 C++ 库(人群模拟库,它确定许多代理的位置)。

在我添加了更多动画和额外的铃声和口哨声后,应用程序在大约 6-30 秒后崩溃,出现如下错误: tiny_malloc_from_free_list tiny_free_list_remove_ptr

问题是,它总是发生在同一个内存地址 0x1000。但是我可以在两个不同的设备上准确地复制错误,所以不是内存本身不好。

我并不期待一个完整的答案,但是一些指向我应该开始寻找的指针会非常好:) 谢谢!

编辑:我完全删除了 c++ lib,但错误仍然存​​在。一旦我靠近了,我会更新。

编辑:问题出在 Cocos2d v. 2 显示统计数据中添加和删除指针。感谢您的所有帮助!纹理枚举值之一是 1<<12 并用作指针...我停止使用显示统计信息。:) 谢谢你们!

4

2 回答 2

1

有了这样的地址,我会怀疑某处的整数到指针的转换。那是什么,4096?我可能会在库中搜索具有该值的常量(可能通过位移 1<<12 实现),并查看是否可以以奇怪的方式找到使用该常量的代码。

于 2012-07-11T07:34:01.187 回答
1

假设您的回溯不会立即显示问题...

听起来这可能是对 nil“对象”的尊重,其中代码试图引用 *(p + 0x1000)。请注意,0x1000 可能是 VM 页面大小。

在这种情况下,我会打开僵尸并保护 malloc,看看我是否能在问题发生时抓住它。

于 2012-07-11T07:34:21.190 回答