1

iPhone 用のアプリケーションを作成していますが、次のエラーが発生します。

malloc: * mmap(size=204800) 失敗しました (エラーコード=12) エラー: 領域を割り当てられません * * デバッグするために malloc_error_break にブレークポイントを設定します

このコードを過度に呼び出した後、これを取得しています:

    - (NSInteger) readInt:(NSInteger)defaultValue
{
    NSRange sr = NSMakeRange(offset, [pdfData length] - offset);
    NSData* sub = [pdfData subdataWithRange:sr];
    char* buf = (char*)[sub bytes];
    int off = 0;
    char c;
    do {
        c = buf[off++]; //the app crash on this line 
    } while (c == NEW_LINE || c == CARRIAGE_RETURN||c == EMPTY_STRING);
    int startString = off - 1;
    do {
        c = buf[off++];
    } while (c != NEW_LINE && c != CARRIAGE_RETURN && c !=EMPTY_STRING);
    off = off - 1;
    offset = off + offset+1;

    NSString *inStringSet = [[[NSString alloc] initWithData:[sub subdataWithRange:NSMakeRange(startString, off-startString)] encoding:NSASCIIStringEncoding] autorelease]; 
    if ([PDFUtils isNumeric:inStringSet ]) {
        NSString* intString = [[[NSString alloc] initWithData:[sub subdataWithRange:NSMakeRange(startString, off-startString)] encoding:NSASCIIStringEncoding] autorelease]; 
        return [intString intValue];
    }
    return defaultValue;
}

シミュレーターで実行すると、このようなエラーは発生しませんが、メモリ使用量が約 700MB に達しますが、デバイスで実行すると、アプリケーションがクラッシュします。同様の問題を読みましたが、まったく運がありません。ヘルパーポインターは大歓迎です。リークの検出とデバッグに関する問題がいくつかありますが、Instruments で追跡した後、リークはなく、自動リリース プールでメモリが正しく解放されているように見えます。(アプリケーションはデバイスでのみクラッシュします) メモリ使用量のピークを回避する方法はありますか? ありがとう。

4

0 に答える 0