Objective-C:为什么这是内存泄漏?

时间:2012-01-13 17:37:19

标签: objective-c memory-management memory-leaks

我的目标C代码中出现内存泄漏,我不明白。我在一个被多次调用的方法中有这个代码:

AnalyzeBpm *analyzer  = [[AnalyzeBpm alloc] init];  

while( sample != NULL)
{
//do something with analyzer
}

[analyzer release];

当我通过Instruments运行此代码时,每次分配Analyze Bpm时都会出现泄漏(这是几百次)。我查看了我的AnalyzeBpm类,我在该类中分配的所有内容都被释放或取消分配。那么为什么这段代码会造成内存泄漏?

2 个答案:

答案 0 :(得分:5)

当Instruments识别泄漏时,它会向您显示分配泄漏的代码行,而不是导致泄漏的代码行。

某些地方保留analyzer而不释放它。你需要找到不平衡的retain。它可能在AnalyzeBpm类中,也可能不在。

答案 1 :(得分:3)

你的alloc-init和release是平衡的,所以它必须是别的东西 - 你的while循环中的东西。