C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[55863] Re:Re:답변을 보고 갑자기 궁금한 내용이 생겨서요~!
danga80 [danga80] 1393 읽음    2009-01-21 16:51
메모리맵 파일의 존재를 알고 있었지만, IPC 의 경우에만 쓰는 걸로 알다가..

유용한 API 한가지를 알고 갑니다. 대용량 파일을 핸들링하는 프로그램에서

아주 요긴할 것 같습니다.

그런데 이 글의 제목대로 궁금한 것이 생겼습니다.

혹시 CreateFileMapping 관련하여 사용을 편하게 해주는

VCL 클래스는 없나요?

웬지 VCL이면 있을 것 같다는 막연한 추측을, 기대를 하게 되는데...

정말 궁금합니다.

감사합니다.

장성호 님이 쓰신 글 :
: 대게 대용량 파일을 처리하는 경우 그 파일을 몽땅 메모리에 올려서 처리하지는 않습니다.
: 그냥 Disk에 냅두고 처리하죠
:
: Disk에 있는데 메모리에 있는것처럼 보는 방법이 있는데...
: 그건 Memory Mapping File 을 이용하는것입니다.
:
: MemoryMappingFile을 프로세서간 통신(IPC)에도 이용되지만
: OS에서 exe나 DLL을 Load할때도  MemoryMappingFile을 이용해 읽습니다.
:
: 관련 api 에는
: CreateFileMapping
: MapViewOfFile
: UnmapViewOfFile
: GetMappedfilename
: OpenFileMapping
:
: 등이 있겠네요
:
:
: 참조
: http://kylix.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=2832
:
:
: 그럼..
:
:
: 이용태 님이 쓰신 글 :
: : 바이너리 파일이 있습니다.
: :
: : 파일 사이즈는...
: :
: : sizeof(unsigend char)*500*500*1750 = 437500000 bit = 417.2MByte 입니다.
: :
: : 이 데이터를 한번에 읽어서 메모리에 올릴려고 하는데요...
: :
: : 다음과 같이 해봤는데... 메모리에 데이터를 복사하는 시간이 5~10초 정도 걸립니다.
: :
: : //<-- 파일 열고
: : pOpenStream->Seek(HEADER_SIZE,soFromBeginning);
: : //동적으로 메모리 생성하고
: : pFullData = new unsigned char[1750*500*500];
: : //파일에서 데이터 읽어온다. 이부분에서 5~10초 정도 걸립니다.
: : pOpenStream->Read((void*)pFullData, sizeof(unsigned char)*1750*500*500);
: :
: : 이것을 좀더 시간을 단축시켜 빨리 메모리에 올릴 수 있는 방법이 있을까요?
: :
: : 아.. 그리고.. 가끔씩 new로 데이터 메모리 할당할때도 bad_alloc() 어쩌구 저쩌구 하면서 에러가 뜨던데요.. 메모리에 할당을 못해서 뜨는 에러겠죠?
: : 제 컴터 메모리가 2G인데... 충분히 용량 남아있는데도 불구하고... 할당 못할때가 있더라구요...
: : 이건 또 왜 그런건지요?
: :
: : 답변 부탁드립니다..

+ -

관련 글 리스트
55842 바이너리 파일에서 데이터 빨리 읽어오기.. 이용태 1185 2009/01/20
55857     Re:바이너리 파일에서 ... 가장빨리 읽어오는 방법은.. 읽어오지 않는것이죠.. 장성호 1698 2009/01/21
55863         Re:Re:답변을 보고 갑자기 궁금한 내용이 생겨서요~! danga80 1393 2009/01/21
55856     Re:바이너리 파일에서 데이터 빨리 읽어오기.. st8123 1548 2009/01/21
55849     Re:바이너리 파일에서 데이터 빨리 읽어오기.. 남병철.레조 1183 2009/01/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.