Обычно массив использует минимальное количество памяти. Отдельный блок, поэтому меньше накладных расходов и нет накладных расходов на управление, как у следующих / предыдущих указателей в связанном списке.
Конечно, это менее эффективно по времени для удаления из начала / середины достаточно большого массива, чем для удаления данного узла из связанного списка, а также любые указатели / индексы в массиве больше не будут ссылаться на После того, как вы это сделали, вы должны быть осторожны, какие дескрипторы вы предоставляете пользователям API таймера и как вы находите данные таймера для конкретного дескриптора. Но если использование памяти действительно является единственной важной проблемой, то массив выигрывает.
Я делал что-то подобное раньше, и лично я бы начал со связанного списка, если он явно не потерпит какого-то конкретного ограничения. Массив указателей на структуры «timerdata» также может работать хорошо, если вы можете предотвратить слишком большой список активных таймеров.