데이터베이스에서 많은 양의 데이터를 검색 할 때 C++ 응용 프로그램에 메모리가 부족한 경우가 있습니다. 32 비트 WinXP 시스템에서 실행되어야합니다. 파일을 개체로 바꿔 넣기
이 투명하게 (기존 코드의 대부분을) 디스크에 데이터 객체를 교환 요구에 의해서 만 메모리로 읽을 수 있는가, 그래서 나는 2GB의에 국한되지있어 Windows가에게주는 32 비트 그 방법?나는 VirtualAlloc과 Address Window Extensions을 보았지만, 내가 원하는 것은 아닌지 확신한다.
는 또한 질문자가 파일 매핑을 만들고 거기에 개체를 만들려고 this SO question을 발견했다. 한 대답은placement new
을 사용하면 코드의 나머지 부분에 꽤 투명한 것처럼 들린다.
내 응용 프로그램이 실제 메모리가 부족하지 않게됩니까? 결국에는 여전히 32 비트 주소 공간 제한이 있기 때문에 완전히 확신 할 수 없습니다. 아니면 많은 종류의 객체를 만들 때 발생하는 다른 종류의 문제입니까? 32 비트 운영 체제를 사용하는 당신이 이것에 대해 할 수있는 아무것도 너무 오래
창은이 유스 케이스에 대해 * 스왑 파일 *을 사용하지 않습니까? 그것은 천천히 지옥처럼 느껴지지만, 그것은 또한 당신의 해결책과 함께 할 것입니다. –
@BartekBanachewicz : 스왑 파일도 일반적인 솔루션은 일반적인 32 비트 OS를 – PlasmaHH
에 2/4기가바이트 가상 주소 공간 제한 * * 한 번에 모든 데이터를 검색 할 수 없습니다에 대해 아무것도 할 수 없습니다. 이미 데이터베이스에 있다면, 섹션에서 읽어보십시오. –