malloc: *** Mmap(размер =204800) не удалось (код ошибки =12)

Я пишу приложение для 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;
}

При работе на симуляторе у меня нет такой ошибки, но я использую около 700 МБ памяти, однако при работе на устройстве происходит сбой приложения. Я читал похожие вопросы, но не повезло вообще. Любые вспомогательные указатели будут с благодарностью. В некоторых проблемах говорится об обнаружении и устранении утечек, но после отслеживания в Instruments выясняется, что утечек нет, и память правильно освобождается в пуле автоматического освобождения, есть только высокий пик памяти, а затем она правильно освобождена. (приложение только сбой в устройстве) Есть ли способ избежать этого пика использования памяти? Благодарю.

0 ответов

Другие вопросы по тегам