malloc:mmap(大小=XX)失败(错误代码=12)



我在iPhone应用程序中遇到内存问题,这让我很难过。这是我得到的错误消息:

malloc:*mmap(大小=9281536)失败(错误代码=12)*错误:无法分配区域

我正在为这个应用程序使用ARC,以防这可能是有用的信息。下面的代码只是使用Bundle中的一个文件来加载核心数据实体。

奇怪的是,碰撞只发生在90多个循环之后;而在mee看来,由于"内容"的大小越来越小,内存请求也应该越来越小。

这是代码,如果有人能看到缺陷,请告诉我。

NSString *path,*contents,*lineBuffer;
path=[[NSBundle mainBundle] pathForResource:@"myFileName" ofType:@"txt"];
contents=[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
int counter=0;
while (counter<10000) {
lineBuffer=[contents substringToIndex:[contents rangeOfCharacterFromSet:[NSCharacterSet newlineCharacterSet]].location];
contents=[contents substringFromIndex:[lineBuffer length]+1];
newItem=[NSEntityDescription insertNewObjectForEntityForName:@"myEntityName"
inManagedObjectContext:context];
[newItem setValue:lineBuffer forKey:@"name"];
request=[[NSFetchRequest alloc] init];
[request setEntity: [NSEntityDescription entityForName:@"myEntityName"
inManagedObjectContext:context]];
error=nil;
[context save:&error];
counter++;
}

我最终使用NSMutableString而不是NSString来解决内容问题。然后使用:[contents deleteCharactersInRange:range];当然要保持足够的射程。循环内部。

最新更新