2012-02-28 7 views
1

の不正なチェックサム、私は次のような方法があります。IOS:malloc関数:オブジェクト0x6e78580のための***エラー:解放されたオブジェクト

- (NSString*) make_sychronous_POST_request_with_payload:(NSData*) payload 
{ 
    NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://xyz.com"]]; 
    [request setHTTPMethod:@"POST"]; 

    NSData *postData = [[Base64 encodeBase64WithData:payload] dataUsingEncoding:NSASCIIStringEncoding]; 
    [request setHTTPBody:postData]; 

    NSURLResponse* response = [[NSURLResponse alloc] init]; 
    NSData* data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil]; 
    data = [Base64 decodeBase64WithString:[[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]]; 

    return [[NSString alloc] initWithData:data encoding:NSISOLatin1StringEncoding]; 
} 

しかし、ラインの

NSData* data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil]; 

を、私はこのエラーを取得する:

AppName(24163,0xa0c87540) malloc: *** error for object 0x6caf4b0: incorrect checksum for freed object - object was probably modified after being freed. 
*** set a breakpoint in malloc_error_break to debug 
(gdb) up 
#27 0x0006153b in -[FinTS30 checkForFinTS30BankWithURL] (self=0x6ca41a0, _cmd=0x9cdf8) at /path/to/project/AppName/FinTS30.m:72 
72  NSString* answer = [self make_sychronous_POST_request_with_payload:message]; 
Current language: auto; currently objective-c 

なぜこのようなことが起こるのか分かりません。

(ところで:ここで私は明示的に非同期ない同期リクエストを使用したい)

EDIT: さて、うまくこれは本当に奇妙です。この問題は、postDataオブジェクトが原因と考えられます。ここでは、これは私がそれを様々な時間をテストし、かなり混乱に見えますが

- (NSString*) make_sychronous_POST_request_with_payload:(NSData*) payload 
{ 
NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:bd.bankURL]]; 
[request setHTTPMethod:@"POST"]; 

NSData *postData = [[Base64 encodeBase64WithData:payload] dataUsingEncoding:NSASCIIStringEncoding]; 
[request setHTTPBody:postData]; 
[postData description]; //adding this prevents the code from crashing 

NSURLResponse* response = [[NSURLResponse alloc] init]; 
NSData* data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil]; 
data = [Base64 decodeBase64WithString:[[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]]; 

return [[NSString alloc] initWithData:data encoding:NSISOLatin1StringEncoding]; 
} 

をクラッシュしない私のコードの修正版です。 [postData description]にコメントすると、[postData description]がすべて正常に動作するとコードがクラッシュします。このような奇妙な行動を引き起こす原因は何ですか?

+0

私は右、あなたはvalgrindのを介してこれを実行してみましたと仮定? – dasblinkenlight

+0

それが示唆するブレークポイントを設定すると、何が表示されますか? – Mark

答えて

関連する問題