mmap()
을 사용하여 가상 메모리를 조작하려고합니다. 나는 기억의 영역을 확보하고 저지하기를 원한다. 이 코드를 테스트했습니다 :크기가 큰 mmap() 호출이 실패하지 않는 이유는 무엇입니까?
const unsigned long gygabyte = 1024 * 1024 * 1024;
const unsigned long gygabyteCount = 2;
const unsigned long maxCapacity = gygabyteCount * gygabyte;
int main()
{
char* pMemory;
pMemory = (char*)mmap(NULL, maxCapacity, PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
if (mprotect(pMemory, maxCapacity, PROT_READ | PROT_WRITE) != 0)
{
cout << "Memory Allocation has failed" << endl;
}
usleep(-1);
return 0;
}
터미널에서 내 프로그램 (예 : 6)을 여러 번 실행했습니다. 저는 "메모리 할당이 실패했습니다"라는 것을 전혀 보지 못했습니다. 64 비트 Ubuntu에서 4GB RAM을 사용하고 있습니다. 아무도 이것에 대해 뭔가를 말해 줄 수 있습니까?
메모리 오버 커밋 정보 – PlasmaHH
게시 한 코드가 아무 것도 저지하지 않습니다. 해당 메모리 영역을 살펴 봅니다. – Mat