2014-09-04 2 views
0

내 데스크탑이 64 비트이고 16GB RAM이 있습니다.C++ 프로그램에서 4GB 이상의 RAM을 사용하는 방법은 무엇입니까?

실행이 가능한 컴파일 타임 설정이 있습니까? 또는 런타임?

+5

x64 플랫폼으로 컴파일하면됩니다. 4GB는 포인터 크기 때문에 32 비트 프로그램의 최대 값입니다. – SHR

+1

귀하의 질문에 대한 오해가있는 것 같습니다. OS가 할 수있는 한 프로그램에서 4GB 이상의 RAM을 사용하도록하기 위해 필요한 특별한 것이 없었습니다. 문제는 4GB 이상의 가상 주소 공간을 사용하고 있습니다. –

+0

'ulimit -a'의 결과는 무엇입니까? –

답변

2

Linux를 실행하고 있습니다. 이것이 작동하지 않는다면 가장 큰 문제는 x86_64 머신을 가지고 있음에도 불구하고 64 비트 지원 프로세서에도 불구하고 32 비트 버전의 OS를 설치했기 때문입니다. 64 비트 버전의 OS를 사용하는 경우 컴파일러 툴 체인은 4GB 이상의 메모리를 사용할 수있는 코드를 자동으로 생성해야합니다.

Linux nimrod-ubuntu 3.13.0-29-generiC#53~precise1-Ubuntu SMP Wed Jun 4 22:06:25 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux 

참고 x86_64하지 i386 :

uname -a 

당신이 좋아하는 무언가를 볼 수 :

는 유형을 확인합니다.

i386에서 x86_64까지 크로스 컴파일 할 수 있지만 대부분의 경우 번거 로움을 감수 할 가치가 없으므로 다시 설치해야합니다.

1

가상 메모리인지 실제 메모리인지 여부에 따라 다릅니다.

가상 메모리의 경우 코드를 64 비트 응용 프로그램으로 컴파일하기 만하면 프로그램은 자연스럽게 최대 2^64GB 가상 메모리를 갖습니다.

실제 메모리의 경우 OS에 따라 프로그램 메모리 양을 할당해야합니다. 사용 가능한 실제 메모리가 충분하고 이미 4GB 이상의 가상 메모리를 사용하고 있다면 프로그램이 4GB 이상의 실제 메모리를 차지할 가능성이 큽니다.

1

gcc의 64 비트 플래그는 -m64입니다.

컴퓨터가 64 비트이면 기본값이며 32 비트 버전을 컴파일하려면 -m32를 지정해야합니다.

If you want more info look here