Если я правильно вас понимаю, проверьте эту ссылку:
Временная сложность выделения памяти
Выделение кучи может быть сделано путем представления свободной памяти в виде связанного списка, но любой достаточно сложный менеджер памяти будет использовать что-то более быстрое, например, дерево AVL, упомянутое в ответе на вопрос, который я опубликовал. Существует даже решение O (1) под названием TLSF (двухуровневое разделенное соответствие), также упомянутое в ответе.