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 安卓adb backup备份应用数据失败
    • ¥15 eclipse运行项目时遇到的问题
    • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
    • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
    • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
    • ¥50 成都蓉城足球俱乐部小程序抢票
    • ¥15 yolov7训练自己的数据集
    • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
    • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
    • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)