Вы выделяете отдельные записи в таблице ha sh, но нет данных, связанных с этими записями, они действительно неинициализированы, что приводит к неопределенному поведению при попытке использовать таблицу ha sh. Вместо этого вы должны просто инициализировать массив указателей, на которые указывает ht_table->table
, с помощью NULL
указателей:
ht_table->size = size;
ht_table->entry_count = 0;
for (i = 0; i < size; i++) {
ht_table->table[i] = NULL;
}
Или просто выделить массив с помощью calloc()
:
ht_table->size = size;
ht_table->entry_count = 0;
if ((ht_table->table = (HT_ENTRY**)calloc(size, sizeof(HT_ENTRY*))) == NULL)
return NULL;
Также не то, что в C приведение к возвращаемому значению malloc
и calloc
не требуется. Более безопасный способ размещения массива:
if ((ht_table->table = calloc(size, sizeof(*ht_table->table))) == NULL)
return NULL;