这是内存不足的问题,无法分配足够的内存空间,比如需要分配的内存大小是一个不正常的值,比较巨大或者设备的内存空间不足以及耗尽.
问题实例
1. 分配的空间过大
NSMutableData *data = [NSMutableData alloc] initWithCapacity:1];
NSInteger len = 2032935142;
[data increaseLengthBy:len];
如果len太大,超过系统的可分配范围,则会出现
NSMallocException:unable to allocate memory for length XXXX.
2. 图像占用空间过大
SDWebImage中对图像数据的保存
-[SDImageCache storeImage:recalculateFromImage:imageData:forKey:toDisk:]
-[SDImageCache storeImage:recalculateFromImage:imageData:forKey:toDisk:]
如果imageData长度过长,就会出现NSMallocException
3. OOM问题
Terminating app due to uncaught exception 'NSMallocException', reason: 'Out of memory. We suggest restarting the application. If you have an unsaved document, create a backup copy in Finder, then try to save
这种情况一般是程序陷入死循环,注意检查代码
解决办法
对于程序中分配内存空间的操作,需要检查参数(空间大小)的有效性,特别是这个参数来自其他模块的返回值,更应该注意