我真的很困惑。我正在使用Cocoa Touch进行一些图像处理,一切运行良好。我的应用程序使用大约120MB的内存,这很好,并且根本没有泄漏,我使用Instruments检查。然而,当我第二次使用我的图像处理类的全新实例运行例程时(在删除第一个当然之后)应用程序在我的iPhone 4上崩溃。它在我的iPad上仍能正常工作3.每当我调用“CGContextDrawImage”时)“崩溃了。显然没有抛出异常或任何类似的东西。我真的不知道为什么会这样,因为应该有足够的内存。在我的iPad 3上的仪器中运行它表明从不使用超过120MB的内存。
请在下面找到导致崩溃的代码。再一次,它只会在第二次这样做时崩溃,而且只在我的iPhone 4上崩溃。
CGImageRef imageref = [image1 CGImage];
uint8_t *inBitmap1 = (uint8_t *) malloc(vectorsizeI);
CGContextRef context1 = CGBitmapContextCreate(inBitmap1, width, height, bitsPerComponent, bytesPerRowI, colorSpace, kCGImageAlphaNoneSkipFirst);
CGContextDrawImage(context1, CGRectMake(xOffset1, yOffset1, imwidth, imheight), imageref);
答案 0 :(得分:0)
显然没有足够的记忆。也许iPad上有,但iPhone上没有。请记住,操作系统仅为您的应用程序保留一小部分物理可用RAM(0.5或1 GB),如果超过该限制,系统将终止看似有害的进程。尝试以某种方式减少应用程序的内存指纹,120 MB不是“很好”。