CGBitmapContextCreate在iPhone 6+中提供了EXC_BAD_ACCESS



调用CGBitmapContextCreate方法时,应用程序崩溃,给出EXC_BAD_ACCESS。

这仅在iPhone 6+中发生(在设备上运行时)。

CGContextRef context = CGBitmapContextCreate(baseAddress, width, height, 8, bytesPerRow, colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst);

是的,我已经尝试将 NSZombieEnabled 设置为 YES 作为环境变量......但EXC_BAD_ACCESS时调试器控制台上仍然没有显示任何内容。

我在这个

确切的函数上遇到了崩溃,因为我正在分配一个存储缓冲区而不考虑它的对齐方式,例如:

baseAddress = malloc (width * height * 4);

现在我用...

baseAddress = new u32 [width * height];

。强制 4 字节对齐,它修复了EXC_BAD_ACCESS。注意,我也使用kCGBitmapByteOrder32Big而不是像你一样小。可能相关,也可能不相关。

但是,我在iPhone 6和iPad Mini上获得了奇怪的像素数据。

(请参阅在iOS 8/iPhone 6上获取像素数据)。

最新更新