У меня есть функция (скажем, с именем next_entity
), которая генерирует значения size_t.Функция действует как генератор, то есть она выдает новое значение при каждом вызове и, наконец, возвращает 0 в качестве часового.
В другой функции, которая вызывает next_entity
, мне нужно сохранитьзначения где-то.Я не знаю количество значений до того, как я получу дозорного, поэтому я не могу malloc
или статически выделить массив для хранения этих значений до того, как они поступят.
Дело в том, что после того, как дозорный приходитединственное, что мне нужно сделать со значениями, это сохранить их в файл, но без повторений, то есть каждое значение должно встречаться только один раз.
После этого значения больше не нужны.
Я пытался использовать GHashTable
из glib.h
во время итерации, чтобы сохранить значения в качестве ключей, но проблема с GHashTable
заключается в том, что указатели на ключи, передаваемые в функцию g_hash_table_insert, должны оставатьсяживой в течение жизненного цикла хеш-таблицы, поэтому для каждого нового значения мне нужно сделать что-то вроде malloc(sizeof(size_t))
.
Это работает, но кажется неэффективным, поскольку malloc
отнимает много времени,
Есть ли лучший способ сделать это?
Я могу опубликовать реальный код, если он необходим, но я не думаю, что проблема в коде.
Любая помощь будет оценена, спасибо заранее!