代码之家  ›  专栏  ›  技术社区  ›  boreas

iPhone内存分配错误

  •  2
  • boreas  · 技术社区  · 14 年前

    你好,我正在开发一个iPhone应用程序,它提供图像和文本信息。在每个文本中都有一个图像,可以单击并缩放,用uiImageView显示。

        NSString* imgName = [imgPath substringToIndex:[imgPath rangeOfString:@".jpg"].location];
    UIImage* img = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:imgName ofType:@"jpg"]]; 
    [imgView setImage:img];
    

    当我一个一个地打开这些图像时,应用程序崩溃(在设备上调试)。控制台出错:

    :解压缩错误 我的姓名(1226,0x3E088868)malloc: *mmap(大小=32768)失败(错误代码=12) * 错误:无法分配区域

    然后:

    CoreAnimation:分配2228352字节失败。

    我没有代码泄漏,如果我不打开图像,就不会得到错误。有人知道这个问题可能在哪里吗?

    3 回复  |  直到 14 年前
        1
  •  1
  •   Eiko    14 年前

    你好像用的内存太多了?

    您打开了多少个图像?从连接的仪器开始,观察内存足迹。

    请记住,图像在加载时比在磁盘上压缩要占用更多的内存。

        2
  •  2
  •   boreas    14 年前

    哦,我想我终于修好了。是的,我的图片比较大,大约700*600。

    问题似乎出在 [imgView setImage:img]; 虽然IMG被释放了,但不知怎么的,它仍在记忆中,我不知道。单行代码 [imgView setImage:nil]; 在释放dealloc中的imgview之前,修复了问题。

    谢谢你的帮助。

        3
  •  0
  •   Pete    14 年前

    尝试将分配/发布打包到本地自动发布池中。