Я в процессе создания хеш-таблицы. Я использую структуру для емкости, количества клавиш, частот и самих клавиш. Вот мой код для инициализации структуры:
htable htable_new(int capacity) {
htable result = emalloc(sizeof *result);
result->capacity = capacity;
result->frequencies = emalloc(capacity * sizeof result->frequencies[0]);
result->keys = emalloc(capacity * sizeof result->keys[0]);
result->frequencies = 0;
result->keys = NULL;
return result;
}
Насколько я понимаю, массив char** является указателем на массив указателей (типа char)? Итак, когда я выделяю память, правильно ли использовать keys[0]? Я предполагаю, что это просто представляет размер указателя char? Что приводит к моему следующему вопросу о том, когда я на самом деле устанавливаю ключи в массиве (который, очевидно, находится в другой функции), должен ли я просто выделять память для каждого индекса по размеру строки, которую я ввожу перед ее сохранением?
i.e. h->keys[index] = emalloc(sizeof(str)
Спасибо за ваши ответы!