윈도우즈에서 read함수를 사용시 주의할 점이 있다.
그것은 파일 용량보다 큰 용량을 읽으려 할 경우
읽어들인 데이터 뒤에 읽어들이려했던 데이터만큼의 값만큼 덤프데이터가 들어 올 수 있다는것이다.
가령 a.txt안에는
1234567890
abcedfghij
란 내용이 들어있다고하자.
이러한 상황에서 실제 a.txt.의 사이즈가 22byte라고 했을때
char *p = (char*)malloc(25);
int fd = _open("a.txt",_O_RDONLY);
int nRead = _read(fd,p,25);
일때
p안에는 1234567890abcdefghij와 덤프값 3개가 들어있었다.
그래서 nread만큼을 제외한 나머지 3바이트를 memset을 통하여 초기화 하는수밖에 없었다.
원인은 모르겠고 일정에 쫓기는와중이라 이런식으로 사용하기로 하였다.
_read발고 CreateFile 과 OpenFile을 조합하여 파일을 읽어도 결과는 마찬가지였다..