Quantcast
Channel: CodeSection,代码区,网络安全 - CodeSec
Viewing all articles
Browse latest Browse all 12749

Is there a memory leak in the following code?

0
0

If I calculate the MD5 value of a file about larger than 200Mb,the app will speed lots of memory and crash.Is there any memory leak in the following code? Is there a better way to calculate the MD5 value of huge video file?

+ (NSString *) md5ForFileContent:(NSString *)path { NSFileHandle *handle = [NSFileHandle fileHandleForReadingAtPath:path]; if (handle == nil) { return nil; } CC_MD5_CTX md5; CC_MD5_Init (&md5); BOOL done = NO; while (!done) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSData *fileData = [[NSData alloc] initWithData: [handle readDataOfLength:1024]]; CC_MD5_Update (&md5, [fileData bytes], [fileData length]); if ([fileData length] == 0) { done = YES; } [fileData release]; [pool release]; } unsigned char digest[CC_MD5_DIGEST_LENGTH]; CC_MD5_Final (digest, &md5); NSString *s = [NSString stringWithFormat: @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x", digest[0], digest[1], digest[2], digest[3], digest[4], digest[5], digest[6], digest[7], digest[8], digest[9], digest[10], digest[11], digest[12], digest[13], digest[14], digest[15]]; return s; }

Check out a potential solution here . It uses the CFReadStream API.

Good luck

Tim


Viewing all articles
Browse latest Browse all 12749