2012-06-13 5 views
0

servin.com 웹 사이트에서 다음 코드를 받았습니다. 코드가 작동하더라도 Instruments는 메모리 누수를보고합니다. 나는이 메모리 누수를 해결하는 방법을 알 수 없도록 코드에서 alloc, retain, copy를 볼 수 없다. 인스트루먼츠 코드 &의 코드는 다음과 같습니다. 어떤 도움을 주시면 감사하겠습니다. 인스트루먼트이 메모리 누수를 해결하는 방법?

// Part 1 - Create Internet socket addr of zero 
struct sockaddr_in zeroAddr; 
bzero(&zeroAddr, sizeof(zeroAddr)); 
zeroAddr.sin_len = sizeof(zeroAddr); 
zeroAddr.sin_family = AF_INET; 

// Part 2- Create target in format need by SCNetwork 
SCNetworkReachabilityRef target = 
SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *) &zeroAddr); 

// Part 3 - Get the flags 
SCNetworkReachabilityFlags flags; 
SCNetworkReachabilityGetFlags(target, &flags); 

// Part 4 - Create output 
NSString *sNetworkReachable; 
if (flags & kSCNetworkFlagsReachable) 
    sNetworkReachable = @"YES"; 
else 
    sNetworkReachable = @"NO"; 

NSString *sCellNetwork; 
if (flags & kSCNetworkReachabilityFlagsIsWWAN) 
    sCellNetwork = @"YES"; 
else 
    sCellNetwork = @"NO"; 


NSLog (@"Network Reachable: %@", sNetworkReachable); 
NSLog (@"Cell Network: %@", sCellNetwork); 

결과 ...

유출 된 객체 - # - 주소 - 크기 - 책임 도서관 - 책임 프레임

malloc에 ​​16 바이트 - 1 - 0x5141d50 - 16 바이트 -에서 SystemConfiguration - SCNetworkReachabilityCreateWithAddress

SCNetworkReachability - 1 - 0x51347b0 - 288 바이트 - SystemConfiguration - SCNetworkReachabilityCreateWithAddress

답변

2

누수가 있습니다. 모든 코드가 끝나면 target에 대한 참조를 해제해야합니다.

반환 값

새로운 불변 ​​도달 참조 : SCNetworkReachabilityCreateWithAddress 애플의 문서에서. 반환 된 값을 반환해야합니다.

전화를 제거하려면 CFRelease(target) 기능을 사용해보세요. 함수 호출간에 지속될 참조가 필요하면 클래스의 인스턴스 변수로 만드십시오.

+0

해결했습니다. 정말 고맙습니다. – Dev1345

관련 문제