我的目标C代码中出现内存泄漏,我不明白。我在一个被多次调用的方法中有这个代码:
AnalyzeBpm *analyzer = [[AnalyzeBpm alloc] init];
while( sample != NULL)
{
//do something with analyzer
}
[analyzer release];
当我通过Instruments运行此代码时,每次分配Analyze Bpm时都会出现泄漏(这是几百次)。我查看了我的AnalyzeBpm类,我在该类中分配的所有内容都被释放或取消分配。那么为什么这段代码会造成内存泄漏?
答案 0 :(得分:5)
当Instruments识别泄漏时,它会向您显示分配泄漏的代码行,而不是导致泄漏的代码行。
某些地方保留analyzer
而不释放它。你需要找到不平衡的retain
。它可能在AnalyzeBpm
类中,也可能不在。
答案 1 :(得分:3)
你的alloc-init和release是平衡的,所以它必须是别的东西 - 你的while循环中的东西。