아무 생각 없이 쓰던 rand()...
최대값이 의외로 작구나.. orz
확률 체크하는데 사용는데 계속 이상하다고 해서 확인하고 찾아보니..
rand() 의 최대값은 RAND_MAX (0x7fff) 으로 정의되어있네... orz
지정 폴더내의 파일, 하위폴더까지 지워주는 함수...
그냥 필요해서 여기저기서 참고해서 만든함수...
(제대로 만든건지는 모르겠음... 어쨋든 지워지긴 지워진다. ㅎㅎㅎ)
흠.. 평소 파일을 다루는 작업을 거의 안하다보니..
파일 다루는데서 자꾸 헤매고 있다....
아래 글에서 ifstream() 대체 코드를 아래의 코드로 작업을 했었는데..
(winapi.co.kr 의 소스 참조해서 작업했다.)
분명 작업PC(windows xp)에서는 정상 작동을 확인하고 다른분(windows vista)께 넘겨드렸는데 제대로 안된다고 해서 가서 보니 filelength()에서 -1을 반환하고 있었다.
fileno() 함수가 잘못된건지, filelength() 함수가 잘못된건지는 모르지만 아무튼 제작업...
결국 아래의 코드로 해결 봤다.
데이터를 binary 로 저장하고 읽어오는 코드를 작업해놓은게 있었는데..
어느날부터 이 부분에서 memory leak 현상이 나타났다.
마침 그 현상 바로 전에 기존과는 좀 다른 방식으로 추가한 코드 부분이 있어서
그 부분이 원인이라고 철썩같이 믿고 있었는데...
오늘 날 잡고 그 부분을 분석해보니...
파일을 읽어올 때 사용한 ifstream 에서 메모리가 새는 것으로 나타났다.
결국 인터넷을 찾아보니 VS6.0의 STL에 있는 버그라고 해서 fopen, fread 등의 함수로
수정하긴 했는데... 바꿔놓고 생각해보니 내가 쓰는건 2003...
2003에서는 수정된 버그라고는 하던데... 내가 잘못쓴건가??
아무튼.. 수정하고 나니 memory leak 은 사라졌다
ifstream...... 모땐것 -_-