Метод Objective-C Zlib с потенциальной утечкой

Я только что проанализировал свой код и нашел ошибку анализа.

Potential leak of memory pointed to by 'decompressedBytes' 

У меня никогда не было такой ошибки, я немного поработал, но не могу понять, как исправить эту «потенциальную утечку»,

это мой код выглядит так:

 - (NSData*) dataByDecompressingData:(NSData*)data{ Byte* bytes = (Byte*)[data bytes]; NSInteger len = [data length]; NSMutableData *decompressedData = [[NSMutableData alloc] initWithCapacity:COMPRESSION_BLOCK]; Byte* decompressedBytes = (Byte*) malloc(COMPRESSION_BLOCK); z_stream stream; int err; stream.zalloc = (alloc_func)0; stream.zfree = (free_func)0; stream.opaque = (voidpf)0; stream.next_in = bytes; err = inflateInit(&stream); CHECK_ERR(err, @"inflateInit"); while (true) { stream.avail_in = len - stream.total_in; stream.next_out = decompressedBytes; stream.avail_out = COMPRESSION_BLOCK; err = inflate(&stream, Z_NO_FLUSH); [decompressedData appendBytes:decompressedBytes length:(stream.total_out-[decompressedData length])]; if(err == Z_STREAM_END) break; CHECK_ERR(err, @"inflate"); } err = inflateEnd(&stream); CHECK_ERR(err, @"inflateEnd"); free(decompressedBytes); return decompressedData; } 

любая помощь будет с благодарностью

    если ваш CHECK_ERR окажется чем-то вроде if (err) return nil тогда предупреждение означает, что ваша функция имеет раннее возвращение и может не всегда освобождать память, которую вы malloc ed

    вам следует избегать malloc если это возможно.

    попробуй это

     NSMutableData *decompressedBytesData = [[NSMutableData alloc] initWithCapacity:COMPRESSION_BLOCK]; // autorelease if not ARC Byte* decompressedBytes = (Byte*)[decompressedBytesData mutableBytes]; // you don't need free(decompressedBytes); 
    Давайте будем гением компьютера.