Всем привет. Есть вопрос касательно допустимых выделений памяти с помощью операции new.
Провел небольшой тэст:
До открытия окна создал следующий массив
int* LargeMassive; LargeMassive=new int[262144000000]; LargeMassive[262143999999]=115;
Программа запустилась и окно открылось безо всяких ошибок. Однако при этом утилита системный монитор показывает, что занимаемая приложением память не получила заметных увеличений, а то и вовсе никаких (или там только статически выделенная память отображается?).Раздел подкачки тоже без изменений. При этом std::cout << LargeMassive[262143999999];Честно выдает 115. Предыдущий элемент дает 0.
Но как так? Если я посчитал правильно, такой массив должен забрать 976 GB (sic!) из кучи.
А вот если я допишу еще нолик к размеру массива, наконец вижу ошибку bad_alloc. Но все равно, как операционка заставляет существовать тот массив?