Не получается создать массив в 100 000 элементов - C (СИ)
Формулировка задачи:
Всем доброго времени суток. Столкнулся с проблемой: не получается создать массив в 100 000 элементов. Компилируется нормально, но вот при запуске программы, она аварийно завершается. Среда разработки Dev-C++.
Опытным путём установил, что можно максимально сделать 52070 элементов
#include <stdio.h> #include <stdlib.h> main(){ struct tzap{ unsigned long int sn,ph; char fio[30]; }; tzap zap[100000]={}; long int i,pok; int j,dlin,l; char s[30]={}; for (i=1;i<=100000;++i){ zap[i].sn=i; pok=1000000; zap[i].ph=(rand()%9+1)*pok; for (l=1;l<=6;++l){ pok=pok/10; dlin=rand()%10*pok; zap[i].ph+=dlin; } dlin=rand() % 11+20; for (l=0; l<dlin; ++l) zap[i].fio[l]=rand() % 26 + 97; printf("%s%d%c","pozition l: ",l,' '); printf("%d%c%d%c%s%c",zap[i].sn,' ',zap[i].ph,' ',zap[i].fio,'\n'); } getchar(); }
Решение задачи: «Не получается создать массив в 100 000 элементов»
textual
Листинг программы
tzap * zap = (tzap*)malloc(100000 * sizeof(tzap));
Объяснение кода листинга программы
В данном коде:
- Переменная
zap
типаtzap
объявлена и инициализирована значением, полученным от функцииmalloc
, которая выделяет память для массива. - В
malloc
указан размер памяти, которую нужно выделить, в данном случае 100000 * sizeof(tzap). - Результат работы
malloc
приводится к типуtzap
с помощью оператораcast
. - Значение
zap
записывается в переменнуюtzap * zap
. - В данном случае переменная
zap
является указателем на первый элемент массива. - Массив состоит из 100000 элементов типа
tzap
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д