2011. 1. 4. 02:52
까먹고 찾고 외우고 또 까먹고의 무한 loop

많이 들어봤을 꺼다. 

"VC는 디버그 모드에서는 메모리 할당시 0xcdcd... 이런 값으로 가득 채운다.
왜냐면 release 모드에서 부팅 후 사용되지 않은 메모리를 접근할 경우 0으로 되어 잇다.
이 상황에서 잘돌아간다고 계속 작업하면 나중에 프로그램이 기존에 사용한 메모리를 읽을 시
쓰레기 값을 읽게되고 프로그램이 하늘로 가기 때문이다"

이글은 위의 사항을 까먹고 수행한 뻘짓의 기록이다.

발견한 문제는 다음과 같다.

release 모드의 openCV library를 사용하면 문제가 없는데,
debug 모드의 openCV library를 사용하면 일부 테스트가 죄다 망가지네?

뭥미 이거 왜이래?

상황은...
1. 더러운 세상 class화도 안된 openCV 1.0을 쓰라니요? boost도 안된다고 할까봐 대충 c스럽게 작성
2. 아따 노트북 느리다. 매번 테스트 코드 작성할때 마다 테스트 수행시간이 너무 걸린다.
   openCV 는 내가 작성한게 아니니까 release 모드의 library로 빨리 실행하고 테스트해야지.

이렇게 코드를 계속 작성하고 있다가 메모리 릭이 검사가 안되는 것을 발견 ->
relase mode의 library는 (간단한)VC의 메모리 릭 검사 루틴을 생깐다는 사실을 처음 알게됨 ->
debug 모드의 openCV library로 빌드하고 테스트 수행 ->
몇몇 테스트 루틴이 실패함 -> 패닉

원인:
할당한 메모리 초기화를 안하고 그냥 사용하여 쓰레기 값(visutal studio의 0xcdcdcd)을 사용
무식
무식함 ( 200m 짜리 데이터를 처리하고 matlab에서 나온 값과 비교 )


ps. 5일동안 재부팅안하고 200m 짜리 데이터를 1분에 한번씩 불러와서 처리하고 비교하는데
      어째서 한번도 테스트 실패가 안난걸까?


Posted by newpolaris