Не получается создать массив в 100 000 элементов - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем доброго времени суток. Столкнулся с проблемой: не получается создать массив в 100 000 элементов. Компилируется нормально, но вот при запуске программы, она аварийно завершается. Среда разработки Dev-C++.
#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();  
}
Опытным путём установил, что можно максимально сделать 52070 элементов

Решение задачи: «Не получается создать массив в 100 000 элементов»

textual
Листинг программы
tzap * zap = (tzap*)malloc(100000 * sizeof(tzap));

Объяснение кода листинга программы

В данном коде:

  1. Переменная zap типа tzap объявлена и инициализирована значением, полученным от функции malloc, которая выделяет память для массива.
  2. В malloc указан размер памяти, которую нужно выделить, в данном случае 100000 * sizeof(tzap).
  3. Результат работы malloc приводится к типу tzap с помощью оператора cast.
  4. Значение zap записывается в переменную tzap * zap.
  5. В данном случае переменная zap является указателем на первый элемент массива.
  6. Массив состоит из 100000 элементов типа tzap.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.333 из 5
Похожие ответы