malloc:*** mmap(size = 204800)失败(错误代码= 12)

时间:2013-01-17 17:04:01

标签: ios memory-management malloc mmap region

我正在为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进行跟踪后,似乎没有泄漏并且内存在自动释放池中正确释放,只有内存高峰然后才能正确释放。 (应用程序仅在设备中崩溃) 反正有没有避免内存使用高峰? 感谢。

0 个答案:

没有答案