2014-11-19 6 views
2

CGBitmapContextCreate 메서드를 호출하면 EXC_BAD_ACCESS를 제공하는 응용 프로그램이 충돌합니다.CGBitmapContextCreate는 iPhone 6에서 EXC_BAD_ACCESS를 제공합니다.

이것은 iPhone 6 이상에서만 발생합니다 (기기에서 실행 중일 때).

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

그리고 그래, 내가 환경 변수로 YES로 NSZombieEnabled 설정을 시도했습니다 ..하지만 여전히 아무것도 EXC_BAD_ACCESS시 디버거 콘솔에 표시되지지고 있습니다. I는 정렬없이 대하여 저장 버퍼를 할당하기 때문에

답변

0

I는 예를 들어,이 정확한 기능 충돌을 갖는 하였다

baseAddress = malloc (width * height * 4); 

이제 I 사용 ...

baseAddress = new u32 [width * height]; 

한다. .. 4 바이트 정렬을 강제하고 EXC_BAD_ACCESS를 수정했습니다. 참고로, 나는 kCGBitmapByteOrder32Big를 약간 사용하는 대신 사용합니다. 관련성이 있거나 그렇지 않을 수 있습니다.

그러나 iPhone 6 및 iPad Mini에서 이상한 픽셀 데이터가 다시 나타납니다.

(Getting pixel data on iOS 8/iPhone 6 참조).