C/C++

Как создать гигантский массив в C++?

При попытке создать массив размером на миллион крашится программа, как можно решить проблему?
миллион еще не такой большой массив, но тут зависит от твоего типа данных, а то может миллион по 100 мегабайт хочешь.
И проверяй возврат, что действительно тебе выделило память.
Евгений Руденко
Евгений Руденко
73 228
Лучший ответ
Алексей Грачев миллион интов
Бывают ограничения на локальные статические и вариабельные массивы. У меня на дроидах такие data-коллекции как раз где-то несколькими мегабайтами рабочей памяти и ограничены. То есть массив типа double (локальный или VLA-array) длиной в полтора миллиона уже не создать, так что всё совершенно верно - программа при этом крашится. И сделано это так специально!
Глобальных статических и любых динамических массивов это не касается, так что даже на телефоне можно работать с массивом целых чисел размером хоть сто миллионов если не больше, не говоря уж о хорошем PC. Просто пишешь, например, так:
 cout > n; int *A = new int [n]; 
и работаешь с этим массивом как тебе надо! А когда он перестанет быть нужным, просто отказываешься от этой памяти командой delete [] A;
Альтернатива массивов - векторы. С ними тоже нет никаких ограничений на используемую память объёмами порядка нескольких мегабайт. Это очень удобная коллекция данных, от занятия памяти которой тоже можно отказаться в любой момент, освободив её для чего-нибудь другого.
А проверять память на её выделение всё же лучше, чем не проверять, а то мало ли что...
Евгений Ташев
Евгений Ташев
66 572
Создать второй массив и пихать всё остальное в него
Компилировать в x64, чтобы больше было ОЗУ
Алексей Грачев тестовый сервер на древнем компиляторе