내 코드는 Objective-C와 C가 혼합 된 코드입니다. 아래 코드를 단순화했지만 여전히 동일한 오류가 발생합니다.메모리 오류를 일으키는 포인터를 사용하는 간단한 함수
CGFloat r,g,b = 0.5;
CGFloat x,y,z = 0.0;
foo(r, g, b , &x, &y, &z);
그리고 C 부분 (수입 C 파일) : 오브젝티브 C 파일에서
void foo(CGFloat R, CGFloat G, CGFloat B, CGFloat *X, CGFloat *Y, CGFloat *Z) {
*X = 5;
*Y = 5;
*Z = 5;
}
포인터 중 하나에 무엇이에 할당 할 때 오류가 발생
는 - 그것은 EXS_BAD_ACCESS을 말한다 . 나는 무엇을 놓치고 있는가 (또는 정확하게 이해하지 못 했는가?). 동일한 프로젝트에서 .c 및 .m 파일을 분리해도 괜찮다고 가정합니다 ... 어쨌든 제대로 빌드하는 것 같습니다.
디버거는 무엇을 말합니까? 'X/Y/Z'의 내용은 무엇입니까? –
@BryanChen 디버거가 아무 말도하지 않고 X/Y/Z가 임의의 값으로 설정되어있는 것처럼 보입니다. 단지 64 비트에서 충돌하지 않는 것으로 나타났습니다. 32 비트에서만 ... 이상합니다. –
어떻게 부르셨습니까? 실제 코드 –