반응형

학교에서 내준 프로젝트를 계속 만들기 위해 방학에도 계속 이어나가고 있다.

그런데 만들다가.. Dlib에서 deserialize라는 함수에 모델 파일을 넣을 때 오류가 난 것이다..

 

왜 그런가.. 하는데 debug 모드에선 this가 nullptr를 가르키고 있다 하고 release 모드에선 예외가 발생했다 하고..

예외 발생(0x00007FF69400D3D3, program.exe): 0xC0000005: 0x0000000000000008 위치를 읽는 동안 액세스 위반이 발생했습니다..

이런식으로..

그래서 뭔 문제인가 보니..

 

이전 프로젝트 같은 경우 정상적으로 됬는데 이번꺼만 안되었다..

왤까 하고 생각해보니 이전껀 포인터를 몰라서 안썼는데 이번껀 포인터를 좀 써봐서 안됬던 것 같은 생각이 떠올랐다..

 

그래서 포인터로 변수 만들때 * 기호를 제거하니.. 되네.. 하하하하하 왜 이걸로 2일을 존버 탄걸까..

 

dlib::shape_predictor* sp;

dlib::deserialize(spPath) >> *sp;

이런식으로 변수를 생성하고 deserialize로 모델을 로드하니 안됬었다..

그래서 그냥 포인터를 제거하니깐 아주 잘된다.. 하하하하하하

 

그래서 난 이런식으로 주석을 했다.

//이거 모델 로드 할때 포인터 쓰면 오류남
dlib::shape_predictor sp; //68점 찍는거

if (modelFileCheck(spPath))
	//dlib::deserialize(spPath) >> sp;

 

요약

Dlib에서 모델 파일 불러올 때 (dlib::deserialize) 이걸로 뭔 이상한 오류 뜨면 포인터를 제거해봐야 한다..

 

(근데 아직도 포인터의 정확한 개념과 사용방법은 몰라서 저게 왜 되는지도 모르겠다.. 흐으억)

반응형

+ Recent posts