Я пытаюсь использовать 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 с 4 ГБ оперативной памяти. Кто-нибудь может мне что-нибудь рассказать об этом?