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