superchao88 2013-10-18 08:15
浏览 1670

内存泄露如何找?????

多运行几次就会出现
malloc: *** error for object 0x1e206e14: incorrect checksum for freed object - object was probably modified after being freed.

*** set a breakpoint in malloc_error_break to debug

以下是程序的调用顺序

NSString *u = [testURL stringByAppendingString:@"/time/set/getfamily"];
NSURL *url = [NSURL URLWithString:u];

NSDictionary *connectParams = [NSDictionary dictionaryWithObjectsAndKeys:

// [NSString stringWithFormat:@"%@", BINDID], @"bind_id",
BINDID, @"bind_id",
nil];

NSMutableData *_mdata = [self createJsonCompressAndEncrypt:connectParams];

NSData *reqdata = [WebService request:url body:_mdata];

NSDictionary *resultsDictionary = [NSDictionary dictionary];
if (reqdata.length == 0) {
    //连接错误,服务器无返回

} else {
    resultsDictionary = [self decryptDecompressJson:reqdata];

    DLog(@"data --> dictionary: %@", resultsDictionary);

    if (resultsDictionary && [resultsDictionary[@"ret"] intValue] == 0) {
        ProtectSettingReturnMessage *userInfoReturnMessage = [[[ProtectSettingReturnMessage alloc] init] autorelease];
        userInfoReturnMessage.cmdType = [NSString stringWithFormat:@"%@", resultsDictionary[@"mode"]];
        userInfoReturnMessage.timeLength = [NSString stringWithFormat:@"%@", resultsDictionary[@"time_total"]];
        userInfoReturnMessage.urlPeriod = resultsDictionary[@"time_period"];
        userInfoReturnMessage.unlimited = [NSString stringWithFormat:@"%@", resultsDictionary[@"enabled"]];

        return userInfoReturnMessage;
    }
}

return nil;



NSString *requestJson = [reqParams JSONString];
DLog(@"reqParams: %@", [reqParams JSONString]);

//构造Json,格式为:XXX{}
NSString *inStr = [NSString stringWithFormat:@"%d", (int)++ requestNum];
NSString *requestStr = [inStr stringByAppendingString:requestJson];
//    NSData *requestData = [requestStr dataUsingEncoding:[NSString defaultCStringEncoding]];
NSData *requestData = [requestStr dataUsingEncoding:NSUTF8StringEncoding];

//压缩,加密
//    NSData *compressData = [NSData dataByCompressingData:requestData];
zlibCompress *zz = [[[zlibCompress alloc] init] autorelease];
NSData *compressData = [zz dataByCompressingData:requestData];

NSMutableData *_mdata = [[NSMutableData alloc] init];
if (compressData) {
    NSData *desData = [Utility desData:compressData key:DESKey CCOperation:kCCEncrypt];
    //        NSString *desStr = [[NSString alloc] initWithData:desData encoding:[NSString defaultCStringEncoding]];

    if (desData) {
        _mdata = [NSMutableData dataWithData:desData];
    } else {
        DLog(@"请求数据加密失败!!!!");
    }
} else {
    DLog(@"请求数据压缩失败!!!!");
}

return _mdata;


Byte* bytes = (Byte*)[data bytes];
NSInteger len = [data length];
NSMutableData *compressedData = [[[NSMutableData alloc] initWithCapacity:len] autorelease];
Byte* compressedBytes = new Byte[len];

z_stream stream;
int err;
stream.zalloc = (alloc_func)0;
stream.zfree = (free_func)0;
stream.opaque = (voidpf)0;

err = deflateInit(&stream, Z_DEFAULT_COMPRESSION);
CHECK_ERR(err, @"deflateInit");


stream.next_in = bytes;
stream.avail_in = len;
stream.avail_out = 0;
while (stream.avail_out == 0) {
    stream.avail_in = len - stream.total_in;
    stream.next_out = compressedBytes;
    stream.avail_out = COMPRESSION_BLOCK;
    err = deflate(&stream, Z_NO_FLUSH);
    [compressedData appendBytes:compressedBytes length:(stream.total_out-[compressedData length])];
    if (err == Z_STREAM_END)
        continue;
    CHECK_ERR(err, @"deflate");
}
stream.avail_out = 0;
while (stream.avail_out == 0) {
    stream.avail_in = len - stream.total_in;
    stream.next_out = compressedBytes;
    stream.avail_out = COMPRESSION_BLOCK;
    err = deflate(&stream, Z_FINISH);
    [compressedData retain];
    [compressedData appendBytes:compressedBytes length:(stream.total_out-[compressedData length])];
    if (err == Z_STREAM_END)
        continue;
    CHECK_ERR(err, @"deflate");
}
err = deflateEnd(&stream);
CHECK_ERR(err, @"deflateEnd");

delete[] compressedBytes;
return compressedData;

求大牛解解

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 cgictest.cgi文件无法访问
    • ¥20 删除和修改功能无法调用
    • ¥15 kafka topic 所有分副本数修改
    • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
    • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
    • ¥40 串口调试助手打开串口后,keil5的代码就停止了
    • ¥15 电脑最近经常蓝屏,求大家看看哪的问题
    • ¥60 高价有偿求java辅导。工程量较大,价格你定,联系确定辅导后将采纳你的答案。希望能给出完整详细代码,并能解释回答我关于代码的疑问疑问,代码要求如下,联系我会发文档
    • ¥50 C++五子棋AI程序编写
    • ¥30 求安卓设备利用一个typeC接口,同时实现向pc一边投屏一边上传数据的解决方案。