상당히 큰 청크 (또는 청크) - 몇 기가 바이트의 메모리를 할당해야합니다.동적 메모리 할당에 대한 제한
terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc
이 괜찮 :
float* d = new float[532000000];
그러나 나는 이상 532,000,000 요소 (~ 2 GB)의 플로트 배열을 할당하려고하면, 나는 런타임 오류 나쁜 (bad_alloc 뿐이다 예외) :
float* d = new float[533000000];
가 그럼 난 할당하려 첫번째 배열 외에 다른 배열. 두 번째 최대 크기는
float 배열은 요소 (~ 748 Mb)임을 확인했습니다.
이 괜찮 :
float* d = new float[532000000];
float* e = new float[196000000];
이 나쁜입니다 :
float* d = new float[532000000];
float* e = new float[197000000];
내가 어떤 응용 프로그램에서 할당 된 메모리에 제한이 어떻게 그들을 피하기 위해 알고 싶습니다? 어떻게 가상 메모리를 사용할 수 있습니까?
내 시스템 - 32 비트 우분투 12.10, 컴파일러 - GCC 4.7, RAM - 8기가바이트 (~ 6.5 기가 무료)
32 비트 또는 64 비트 플랫폼에서 실행하고 있습니까? –
주소 공간 조각화 문제처럼 보입니다. 이는 32 비트 플랫폼임을 강력히 시사합니다. – Mysticial
@OliCharlesworth, 32 비트 (주제에 추가됨) – gorill