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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 52, средняя оценка - 4.98
nill
8 / 8 / 0
Регистрация: 16.08.2009
Сообщений: 417
07.02.2010, 14:28     Тип данных для очень большого массива #1
Есть массив где больше четырех миллионов элементов

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

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

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

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

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

если нет то какой максимальный размер массива можно использовать ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
novi4ok
549 / 502 / 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
8 / 8 / 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
 Аватар для insideone
3622 / 900 / 47
Регистрация: 10.01.2010
Сообщений: 2,429
08.02.2010, 18:53     Тип данных для очень большого массива #23
Я предпологаю в функцию вам надо передавать простой указатель на начало массива. Зачем что то другое?
nill
8 / 8 / 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++

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

Или воспользуйтесь поиском по форуму:
insideone
Модератор
Автор FAQ
 Аватар для insideone
3622 / 900 / 47
Регистрация: 10.01.2010
Сообщений: 2,429
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     Тип данных для очень большого массива
Ответ Создать тему
Опции темы

Текущее время: 01:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru