[완료]동적 할당에 관하여 질문이 있습니다.
글쓴이: sungsaint / 작성시간: 월, 2008/07/21 - 6:35오후
정수가 저장되어 있는 파일이 있으며 제가 만들어야 할 프로그램은 그 파일을 읽어서 정렬을 한 뒤 어떠한 숫자가 어떠한 위치에 있는지 검색하는 프로그램입니다.
정수가 저장된 파일은 그 크기가 제각각이므로 동적 배열을 사용해야 할 것 같은데 여기서 고민이 생겼습니다. 과연 어떻게 해야 가장 최적화된 메모리 사용을 할 수 있는가? 제가 생각해 본 것은 다음과 같습니다.
1. 엄청나게 큰 배열을 만든 뒤 realloc을 하여 크기를 줄인다.
2. 처음에 256(int)짜리 배열을 만든 뒤 파일의 정보가 있을 때 마다 추가로 256(int)를 할당하고 나머지 배열 남는 부분 역시 realloc으로 제거한다. (256에 의미는 없습니다.)
3. 파일을 읽으면서 동시에 계속 realloc을 때려버린다.
4. 파일을 먼저 읽어서 크기를 알아본 뒤 그 크기에 맞추어 배열을 생성하고 다시 파일을 읽어서 배열에다 숫자를 넣는다.
1,2,3 번은 어느것이 효율성이 높은지 모르겠고 4번은 구현 자체를 어떻게 해야할 지 막막합니다. 고수님들의 힌트 부탁드립니다.
Forums:
4번이요?
1. 파일을 연다.
2. 열고 나서의 오프셋을 저장한다.
3. 오프셋의 위치를 가장 마지막으로 이동시킨다.
4. 마지막 오프셋 - 처음 오프셋 = 파일 사이즈
5. buf = malloc(파일 사이즈)
6. read(fd,buf,파일사이즈)
아니면 간단하게 $man stat을 해본다.
머리를 굴려라! 그래야 먹고 산다.
감사합니다!
fseek을 사용해서 쉽게 해결했습니다. 감사합니다.
---------------------------------------------------
그런거 없다.
---------------------------------------------------
그런거 없다.
댓글 달기