2

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

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

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

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

4

1 回答 1

0

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

baseAddress = malloc (width * height * 4);

现在我用...

baseAddress = new u32 [width * height];

...强制进行 4 字节对齐并修复了 EXC_BAD_ACCESS。请注意,我也使用 kCGBitmapByteOrder32Big 而不是您所使用的 little。可能相关,也可能不相关。

然而,我在 iPhone 6 和 iPad Mini 上得到了奇怪的像素数据。

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

于 2015-01-31T17:43:13.220 回答