2011-02-04 3 views
3

방금 ​​videoInput 라이브러리와 OpenCV를 사용하여 내 응용 프로그램에 웹캠 지원을 추가했습니다.신호 슬롯을 통해 전달 된 객체의 삭제를 어떻게 관리합니까?

비디오 스트림은 QThread (제작자)에 있으며, 필요한 그래픽 항목을 업데이트하기 위해 응용 프로그램에 QImage *를 보내는 신호를 내 보냅니다.

메모리 관리 측면에서는 슬롯 사용이 끝나면 소비자 슬롯에서 QImage *를 삭제합니다. 문제는 이제 QImage * 데이터를 받아들이는 하나 이상의 객체를 원한다는 것입니다.

이 경우 데이터의 모든 소비자 (참조 카운트 포함)를 추적 한 다음 QImage * (대부분 생산자 스레드에 있음)를 모두 삭제해야합니다. 당신을 위해 대부분의 작업을 수행해야합니다 스마트 포인터를 사용

+0

가 묵시적으로 공유되는대로 그냥 const를 참조하여 QImage를 통과 할 수이 경우. –

답변

8
+3

+1 : 아마도 Qt가 프레임 워크에서 사용할 수있는 스마트 포인터를 만든 이유 일 것입니다. – rubenvb

관련 문제