Цель-C: Почему это утечка памяти? - PullRequest
1 голос
/ 13 января 2012

Я получаю утечку памяти в моем коде Objective C, которую я не понимаю. У меня есть этот код в методе, который вызывается несколько раз:

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

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

[analyzer release];

Когда я запускаю этот код через Instruments, я получаю утечку каждый раз, когда выделяю Analyze Bpm (что составляет пару сотен раз). Я посмотрел на свой класс AnalyzeBpm, и все, что я выделяю в этом классе, освобождается или освобождается. Так почему этот код создает утечку памяти?

Ответы [ 2 ]

5 голосов
/ 13 января 2012

Когда Instruments идентифицирует утечку, она показывает вам строку кода, которая определяет утечку, а не строку кода, которая вызывает утечку.

Где-то что-то удерживает analyzer без его устранения.Вы должны найти это неуравновешенным retain.Это может или не может быть в AnalyzeBpm классе.

3 голосов
/ 13 января 2012

Ваш alloc-init и release сбалансированы, поэтому это должно быть что-то другое - что-то в вашем цикле while.

...