の不正なチェックサム、私は次のような方法があります。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]がすべて正常に動作するとコードがクラッシュします。このような奇妙な行動を引き起こす原因は何ですか?
私は右、あなたはvalgrindのを介してこれを実行してみましたと仮定? – dasblinkenlight
それが示唆するブレークポイントを設定すると、何が表示されますか? – Mark