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