2012-01-13 1 views
1

내가 이해하지 못하는 내 목표 -C 코드에서 메모리 누수가 발생합니다. 나는 악기를 통해이 코드를 실행하면Objective-C : 왜 메모리 누수입니까?

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

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

[analyzer release]; 

가, 내가 (백 몇 번 인) BPM을 분석 할당 누출마다 얻을 : 나는 여러 번 호출되는 방법이 코드가 있습니다. 내 AnalyzeBpm 클래스를 살펴 보았습니다. 그리고이 클래스에서 할당 한 모든 것이 해제되거나 할당 해제됩니다. 그러면이 코드가 메모리 누수를 만드는 이유는 무엇입니까?

+0

"할 일"while() 블록에 "분석기"를 보관하지 않습니까? –

+0

루프에서 "분석기"로 무엇을합니까? 여기있는 스 니펫은 누출로 이어지지 않을 것입니다. 또한 iOS 시뮬레이터에서 이것을 실행하고 있습니까? 때로는 장치에없는 몇 가지 추가 누수가 있음을 알기 때문입니다. –

+0

이 말은 싫지만, 당신은 여전히 ​​AnalyzeBpm 클래스 안에서 뭔가를 간과 할 수 있습니다. 코드에서 정적 Analyzer 도구를 실행하고 아무 것도 나오지 않는지 확인하십시오. – MechEthan

답변

5

Instruments는 누출을 식별 할 때 누수를 일으키는 코드 줄이 아니라 누설을 할당하는 코드 줄을 보여줍니다.

어딘가에 어떤 것이 붙어 있지 않은 채로 analyzer을 유지하고 있습니다. 불균형 인 retain을 찾아야합니다. AnalyzeBpm 클래스에 있거나 없을 수도 있습니다.

3

당신의 alloc-init와 release는 균형을 이루고 있기 때문에, while 루프에 뭔가 있어야합니다.

관련 문제