무슨 일로 C 하셨습니까?

[C++] Opencv 중단점 트리거 본문

DEBUG

[C++] Opencv 중단점 트리거

OJJJ 2020. 9. 13. 17:51

Opencv을 사용하는 프로젝트를 진행하다가 에러가 발생했다.

 

<의문의 에러 발생>

 

딱 보기에도 Mat형식의 변수가 release되는 과정에서 에러가 발생하는 것 같다.

 

정확한 에러가 어느 부분에서 발생하는지 확인해 봐야겠다.

<프로젝트 구조도>

프로그램의 구조는 위와 같은데, 

 

서버-클라이언트 통신 방식에서 한 클라이언트가 보낸 이미지 데이터(Mat)를 서버가 받아서

다른 클라이언트에게 뿌려주는 구조다.

 

이때 비동기적 작업을 위해 Thread를 사용했는데, 특정 Thread가 종료될 때, Thread가 사용하던 클라이언트의 이미지 데이터를 담는 변수(Mat 형)에서 해당 에러가 발생했다.

 

<어디 있는 지도 모를 코드의 위치>

에러가 발생한 코드가 내가 작성한 코드가 아니다 보니 코드를 수정할 수는 없을 것 같다.

 

 

메모리를 사용했다면 자동으로 할당한 메모리를 해제해주는게 당연한데

난 사용한 적도 없는 함수에서 에러가 발생한다니 아주 죽을 맛이다.

 

 

 

원인을 찾았다고하긴 힘들지만 결국 해결법을 찾았다.

// 선언되어 메모리가 할당된 Mat형 변수	
Mat temp;

// 쓰레드가 종료되기 전
memset(&temp, 0, sizeof(Mat));

 

방법은 생각보다 단순한데, 할당한 메모리를 Thread가 종료되기 전에 memset()함수를 통해 0으로 초기화 시켜주는 것이다. 

 

'DEBUG' 카테고리의 다른 글

[C] 외부 기호를 확인할 수 없습니다  (0) 2020.12.04
[C] 확인할 수 없는 외부 참조  (0) 2020.08.21
Comments