Я создаю структуру данных хеш-таблицы и в моей функции инициализации возникает ошибка сегментации. Вот код:
void allocTableSlots(alu **table, int index){
if(index == MAX)
return;
else{
table[index] = calloc(1, sizeof(alu));
table[index]->registration = -1;
table[index]->next = -1;
allocTableSlots(table, index+1);
}
}
void initializateHashTable(hash *hashing){
hashing = calloc(1, sizeof(hash));
allocTableSlots(hashing->table, 0);
hashing->collisionArea = 690;
}
Мои структуры следующие:
#define MAX 997
typedef struct alu{
int registration;
char name[80];
char email[80];
int next;
} alu;
typedef struct reg{
alu *table[MAX];
int collisionArea;
}hash;
Ошибка возникает: if(index == MAX)
на allocTableSlots()
функции
Если я изменю MAX
, для MAX-1
или любого другого числа, например 500
, ошибка все еще появляется после позиции 499
, поэтому не похоже, что я пытаюсь получить доступ к недопустимой позиции моего массива table
Я уже пробовал итеративную версию (на случай, если в моей рекурсии есть ошибка), но все та же