iOS libsystem_c.dylib strdup内存泄漏NSZombie无法正常工作

时间:2011-05-05 14:30:12

标签: objective-c ios memory-leaks instruments nszombie

请帮我跟踪iOS内存泄漏情况。谢谢!

我正在使用xCode 4.0.1并尝试激活NSZombie以跟踪内存泄漏,但它似乎不像以前一样工作,使用xCode 3.x

我无法找到内存泄漏的来源,因为Instruments指出了这一点:

泄漏对象 - >的 GeneralBlock-32 地址 - >的 0x4c8600 尺寸 - > 32字节 负责任的图书馆 - >的 libsystem_c.dylib 负责任的框架/来电 - >的 strup

此时我不知道我是否正在使用乐器与NSZombie正确使用xCode 4,因为当我点击“i”以获取更多信息时它不会显示NSZombie选项信息,在左侧选项泄漏

观察:我的iPhone应用程序播放实时流mms / wma以及wma udioudio文件的时间有限。使用有限的wma文件,发生泄漏,但当我从流式传输源播放时完全,没有结束时间。

2 个答案:

答案 0 :(得分:10)

首先,这是一个malloc块,而不是一个对象。僵尸不会工作(也不会在以前的版本中工作)。

泄漏发生了多少次?一旦?别担心。每个流一次?提交一个错误 - 到目前为止你的代码中没有这个错误(除非你的代码正在调用strdup,这肯定是可能的,但在大多数没有大量使用第三个的iOS应用程序中是非典型的派对图书馆......你呢?)

在任何情况下,除非它在您的应用程序的运行时间内泄漏100s和100s的32字节分配,否则不要担心(但请提交错误)。

正如Valkio所说,你可以直接从gdb(或从Instruments)获取分配的堆栈跟踪。

答案 1 :(得分:5)

如果你这样做,你可以看到它的分配位置:

  1. 转到产品 - >编辑方案 - >跑 (调试) - >参数。
  2. 将此添加到环境变量中: MallocStackLoggingNoCompact
  3. 将其设为
  4. 跑,让它崩溃。
  5. 键入控制台(gdb) info malloc 0x4c8600 或任何地址。
相关问题