Здравствуйте. Столкнулся с проблемой когда при выполнении файла, выдается ошибка, о том что сегментация потеряна. Приведу текст программы: #include <string.h> #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <fcntl.h> #include <sys/stat.h> #include <stdlib.h> #include <sys/time.h> #include <time.h>
#define STRATEGY_MAXNUM 6 // максимальное количество стратегий #define PASS_MAXNUM 200 // максимальное количество прогонов
// структура статистики по отдельной стратегии /*typedef struct { int task_num[PASS_MAXNUM]; } SSTAT; */ // структураOC статистики выполнения заданий typedef struct { int strategy_num; // количество используемых стратегий int run_num; // количество прогонов int s_stat[STRATEGY_MAXNUM][PASS_MAXNUM]; // массив структур статистики по стратегиям } CMS_STAT;
/**************************************************************************** cms_statinit - инициализация массива структур статистики
Входные параметры: s_num - количество используемых стратегий r_num - количество прогонов
Возвращаемое значение: указатель на массив статистики выполнения заданий NULL - в случае ошибки ****************************************************************************/ CMS_STAT *cms_statinit(s_num,r_num) int s_num,r_num; { int i,j; static CMS_STAT cms_stat;
// проверка входных аргументов if((s_num > STRATEGY_MAXNUM) || (r_num > PASS_MAXNUM)) { printf("%d > %d\n",s_num, STRATEGY_MAXNUM); printf("%d > %d\n",r_num, PASS_MAXNUM); printf("не обнулили"); return((CMS_STAT *) NULL); } cms_stat.strategy_num = s_num; cms_stat.run_num = r_num;
// обнуление массива структур статистики по стратегиям for(i = 0; i < s_num;i++) bzero((void *) cms_stat.s_stat[i], r_num * sizeof(int)); printf("обнулили");
return(&cms_stat); }
void cms_stat_ob(ps) CMS_STAT *ps; { int i, j; for(j=0;j<STRATEGY_MAXNUM;j++) { for(i=0;i<PASS_MAXNUM;i++) { ps->s_stat[j][i] = 0; } } }
void cms_print(ps) CMS_STAT *ps; { int i,j; for(i=0;i<STRATEGY_MAXNUM;i++) { for(j=0;j<PASS_MAXNUM;j++) { printf("%d ", ps -> s_stat[i][j]); } printf("\n"); } }
main() { cms_statinit(6,200); cms_print(); cms_stat_ob(); }
Допустимое количество элементов структуры может быть меньше 100, при обявлении 1200 элментов структуры выдается ошибка о сегментации. Функция cms_statinit() по идеи должна обнулять элементы структуры, но это не происходит.
Подскажите пожалуйста, в чем ошибка. Заранее благоарен.