Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- dart
- vs code
- ws2_32.lib
- 연결리스트
- 코틀린
- 문자열다루기
- Linked List
- background service
- vscode
- 딕셔너리
- Kotlin
- Android
- InfluxDBClient
- FTP
- flutter
- InfluxDB
- 소켓프로그래밍
- 메모리반환
- UI
- C
- dictionary
- 자료구조
- socket
- 콘솔 키보드 이벤트
- 문자열 다루기
- 파일입출력
- 문자열파싱
- Mat 변수
- foreground service
- 진수변환기
Archives
- Today
- Total
무슨 일로 C 하셨습니까?
[C++] Opencv 중단점 트리거 본문
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 |