В данной лабораторной работе ставилась задача реализовать компонент-аллокатор, использующий в своей работе алгоритм "Best Fit".
Аллокатор работает следующим образом: для пользования программой выделяется буффер размером 8 МБ. По запросу пользователя компонентом, ему под необходимый размер резервируется блок (chunk) памяти. Поиск свободного блока осуществляется по алгоритму "Best Fit", т.е. находится блок, размер которого ближе всего к запрашиваемому размеру (наименее больше или равен). Поскольку изначально буффер не делится на блоки (состоит из одного большого), при выделении происходит расщепление свободного блока на свободный и занятый.
При необходимости освободить память происходит также вызов процедуры vacuumBuffer, которая объединяет освобожденные блоки, тем самым обеспечивая защиту от фрагментирования памяти.
Блоки памяти хранятся в односвязанном списке.
Как самый явный путь оптимизации, возможно добавить в программу счётчик, по которому будет вызывать процедура vacuumBuffer. До определенного момента фрагментация памяти не является настолько критичной, а поиск смежных свободных блоков для слияния, хоть и происходит за линейное время, всё равно тормозит работу компонента.