Это может выглядеть глупо, но сейчас я немного растерялся.Почему эта программа не потребляет всю память?Например: у меня в терминале Linux (2G RAM) работает следующая программа,
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
cout<<sizeof(int*)<<endl;
for(int i=0; i<pow(2.0,30.0);i++)
{
new int(i);
}
return 1;
}
1) Я подтвердил, что размер int на этой машине составляет 4 байта, тогда для оперативной памяти 2 ГБ он может содержать2 ^ 30/2 ^ 2 = 2 ^ 28
2) следуя приведенной выше логике, как можно изменить программу, фактически занимающую всю память 2 ГБ?
Добавлено: Я просто хочууверен, что я правильно понимаю, теоретически.Если нет виртуальной памяти или оптимизации ОС и т. Д., Только 2GBRAM может содержать 2 ^ 28 int, это так?В таком случае вышеуказанная программа будет использовать всю память?Знаете ли вы, как я мог отключить функции виртуальной памяти / подкачки и т. Д. В Linux?
Спасибо!