7. Heap


В прошлый раз, я споткнулся именно на этой статье. Уже подготовив перевод, я обнаружил некоторые ошибки в описании алгоритма и, пытаясь их исправить, полностью его переписал. Мой алгоритм в большей степени основан на алгоритме аллокатора Doug Lea, который используется (или когда-то использовался) в GNU libc. Поэтому, данная статья не является переводом оригинального цикла и алгоритм, представленный здесь отличается от алгоритма JamesM. Итак...

В ядре нам так или иначе потребуется механизм для динамического выделения памяти. На данный момент нами релизован механизм, использующий так называемый placement new, который нас вроде бы устраивает, но он обладает одним существенным недостатком: мы не можем эту память освободить.