【发布时间】:2013-09-25 04:40:24
【问题描述】:
在 xcode for iphone 中使用此代码时,我得到一个分配
区域错误。 (使用模拟器)
NSString* str =@"Sommetext";
for (int i =1; i < 50 ; i++) {
str = [[[str stringByAppendingString:@"\n"]
stringByAppendingString:str] stringByAppendingString:@""];
NSLog([NSString stringWithFormat:@"%d",i]);
}
监控日志显示从1增加到26然后
崩溃并出现以下错误。
Appname(239,0xac5c9a28) malloc: * mmap(大小=805306368)失败(错误代码=12) * 错误:无法分配区域
但是在我的安卓(三星)上运行相同的代码(在 java 中)
Galaxy S2) 循环 1000 次也没有问题。
更新 1:
使用 GCD 在后台运行代码返回相同的错误,因此它不是主线程过载问题。
更新 2:
运行良好的 Android java 代码
String MsgText = "Some text";
for(i = 0 ; i < amount; i++)
{
////Works on amount < 10000
//Tested on Galaxy S2 **1GB Ram**
MsgText = MsgText + MsgText;
}
【问题讨论】:
-
小问题(不直接解决这个问题)......你有没有理由不使用 NSMutableString? :-)
-
@SaschaHameister 这有什么帮助?手机仍然会耗尽内存。
-
@Danilo 没有承诺会有所帮助。只是被认为是使用它的冲动,因为它可能会更好。当然,这不会改变有关此问题的任何内容。希望评论仍然可以接受。 (不会用此评论打开新答案。;))
标签: iphone objective-c xcode memory nsstring