【问题标题】:CGBitmapContextCreate gives EXC_BAD_ACCESS in iPhone 6+CGBitmapContextCreate 在 iPhone 6+ 中提供 EXC_BAD_ACCESS
【发布时间】:2014-11-19 07:19:48
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: ios iphone cgcontext cgbitmapcontextcreate


    【解决方案1】:

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

    baseAddress = malloc (width * height * 4);
    

    现在我用...

    baseAddress = new u32 [width * height];
    

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

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

    (见Getting pixel data on iOS 8 / iPhone 6)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-14
      • 2015-07-16
      • 1970-01-01
      • 1970-01-01
      • 2011-07-05
      • 2012-12-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多