Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 52, средняя оценка - 4.98
nill
9 / 9 / 0
Регистрация: 16.08.2009
Сообщений: 417
#1

Тип данных для очень большого массива - C++

07.02.2010, 14:28. Просмотров 6952. Ответов 24
Метки нет (Все метки)

Есть массив где больше четырех миллионов элементов

C++
1
int massiv[1070190][4]={0};
когда так пишу программа компилируется нормально

но при выполнении выдает ошибку
в коде программы в массив даже ничего не записываю но все равно прога вылетает

пробовал писать так

C++
1
double massiv[1070190][4]={0};
вылетает так же

можно как то использовать такой массив ?

если нет то какой максимальный размер массива можно использовать ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2010, 14:28     Тип данных для очень большого массива
Посмотрите здесь:

C++ Пользовательский тип данных для C
Мне очень нужна программа для игры gta samp 0.3c для взлома базы данных C++
C++ Сортировка очень большого файла.
Класс очень большого числа. Перегрузка operator++ C++
C++ что лучще использовать для большого массива тескста
C++ Исследование сортировки метода "пузырек" для большого массива
тип данных для двоичного числа C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
novi4ok
550 / 503 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
08.02.2010, 18:10     Тип данных для очень большого массива #21
Цитата Сообщение от nill Посмотреть сообщение
novi4ok,
вопрос все тот же
как присвоить значение массиву?
скажем элементу [0][0]

C++
1
pIntArray[0][0]=1;
вот так:

*(pIntArray+(0*ROW_LENGTH)+0) = 1;
nill
9 / 9 / 0
Регистрация: 16.08.2009
Сообщений: 417
08.02.2010, 18:26  [ТС]     Тип данных для очень большого массива #22
теперь все работает и работает быстро огромное спасибо novi4ok
использую самый простой вариант

C++
1
2
int *massiv = (int*)malloc (1070190*sizeof(int)*4);
*(massiv+(0)+0) = 1;
незнаю тут спросить или создать новую тему

а как такой массив передать в функцию ?
1) что писать в прототип функции?
2) что писать при определнии функции ?
3) что писать при вызове функции ?
insideone
Модератор
Автор FAQ
3636 / 914 / 49
Регистрация: 10.01.2010
Сообщений: 2,464
08.02.2010, 18:53     Тип данных для очень большого массива #23
Я предпологаю в функцию вам надо передавать простой указатель на начало массива. Зачем что то другое?
nill
9 / 9 / 0
Регистрация: 16.08.2009
Сообщений: 417
08.02.2010, 19:35  [ТС]     Тип данных для очень большого массива #24
опять проблема вылезла прога вылетает после 5 минут
думаю проблема в оперативной памяти количество ее стремительно уменьшаеться пока прога запущенна, надо как то удалять массив из нее
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.02.2010, 20:28     Тип данных для очень большого массива
Еще ссылки по теме:

Целочисленный тип данных для 10^50 C++
C++ Тип данных для размера файла
Cохранение очень большого массива в текстовый файл C++
Обработка большого массива данных на C++ C++
Свой тип данных для перегрузки функций C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
insideone
Модератор
Автор FAQ
3636 / 914 / 49
Регистрация: 10.01.2010
Сообщений: 2,464
08.02.2010, 20:28     Тип данных для очень большого массива #25
Не совсем понял в чем трудность, нижеприведенный пример нормально работает. 17 МБайт памяти не слишком уж и много (хотя я понимаю что все относительно)
C++
1
2
3
4
5
int* Array = new int[1070190*4];
// Тут что то делаем с массивом как надо
 
// Когда массив уже не нужен делаем так
delete [] Array;
ps. Для malloc есть free однако я им не пользовался так что поищите информацию про него. free освободит выделенную malloc память.
Yandex
Объявления
08.02.2010, 20:28     Тип данных для очень большого массива
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru