카메라에서 직접 captureOutput의 비디오 프레임을 처리하는 iOS 응용 프로그램이 있습니다. 처리의 일부로 다른 소스 파일에서 여러 C 함수를 호출하고 있습니다. UIImages를 원시 데이터로 변환하고이를 빠르게 전달합니다. 모든 처리는 비디오 출력에 연결된 대기열에서 수행됩니다.Objective-C에서 C 함수 호출 - 많은 양의 데이터 전달
이 부분은 정상적으로 작동하는 것 같습니다. 그것은 내가 지나가는 데이터가 너무 커지면 한계를 넘기고있는 것처럼 보이고 C 함수의 초기화 단계에서 갑자기 EXC_BAD_ACCESS 오류가 발생합니다. 초기화 란 작은 정적 배열을 선언하고 0으로 설정하는 것을 의미합니다.
대용량의 데이터를 전달하면서 스택 한계를 넘는다면 다른 링커 플래그와 -Wl, -stack_size를 사용하여 스택 크기를 늘리려고했는데 궁금한 점이 있었지만 차이가 나는 것 같지 않았습니다. .
비 UI 스레드에서 C 함수를 호출하는 방법에 대해 알아야 할 사항이 있습니까?
죄송하지만 일반적으로 코드를 게시 할 수 없으며 이러한 상황에 대한 일반적인 조언과 조언을 구하고 있습니다.
몇 가지 추가 정보 - 우리는 Objective-C의 비디오 처리 측면에서 메모리를 해제하고 자동 릴리즈 풀을 사용하는 데 문제가있었습니다 (다른 스레드와 마찬가지로 권장 됨). C 코드. 릴리스/해제가 C에서 실행되는 빈도를 늘리는 방법이 있습니까? 아니면 그냥 꼬리를 쫓고 있습니까?
나는 그것이 목적 C.에서 C 함수에 큰 입력을 통과하는 문제를 반영하도록 게시물/질문의 제목을 편집하는 것이 좋습니다 것입니다그 외, 나는 제안 할 것이 아무것도 없다. ( –
C/Objective-C의 성질에 문제가있는 것처럼 들리지 않는다. 어딘가에 나쁜 메모리 접근이있는 것처럼 들린다. –
네, 추적하려고했습니다. 모든 메모리 문제와 응용 프로그램은 악기에 따라 메모리 (실제 및 가상)에서 안정적이며 메모리 경고를받지 않습니다. – FiddleMeRagged