В средах программирования
C используется реализация malloc, предоставляемая стандартной библиотекой C, которая поставляется с операционной системой. Концепции в Распределитель памяти Дуга Ли (называемые dlmalloc ) наиболее широко используются большинство распределителей памяти в той или иной форме в системах UNIX. dlmalloc использует ячейки разных размеров для размещения объектов - для размещения объекта используется ячейка, ближайшая к размеру объекта.
FreeBSD использует новый многопоточный распределитель памяти под названием jemalloc , разработанный для одновременной работы и поточно-ориентированной обработки, который обеспечивает хорошие характеристики производительности при использовании в современных многоядерных системах. Сравнение старого malloc и нового многопоточного можно найти здесь . Несмотря на то, что он многопоточный, он по-прежнему использует концепции блоков разных размеров для размещения объектов в соответствии с их размером (для выделения объекта используются блоки, наиболее близкие к размеру объекта).
В ядрах UNIX наиболее популярным распределителем памяти является slab allocator , который был представлен Sun Microsystems. Распределитель slab использует большие куски памяти, называемые slabs. Эти плиты делятся между тайниками объектов (или пулов) разных размеров. Каждый объект выделяется из кэша, который содержит объекты, наиболее близкие к его размеру.
Как вы могли заметить, вышеприведенные кэши bin / chunks / slab являются просто формами алгоритма best fit . Таким образом, вы можете легко предположить, что алгоритм «наилучшего соответствия» является одним из наиболее широко используемых алгоритмов malloc (хотя распределители памяти отличаются другими важными способами).