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