0
如果我計算大於200Mb的文件的MD5值,該應用程序將加速大量內存和崩潰。以下代碼中是否存在內存泄漏? 有沒有更好的方法來計算巨大的視頻文件的MD5值?下面的代碼中是否有內存泄漏?
+ (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;
}
你問過樂器嗎? –