Непосредственно в реализации автора лучше изменить несколько пунктов:
1) Вместо индексов лучше использовать смещение (в байтах) в массиве — это даст единую реализацию для пулов с любым размером элементов!!! Причём использовать необходимо именно смещения, а не адреса — это даст позиционную независимость: например при отсутствии свободных элементов в пуле нам прийдётся сделать ReAlloc и возможно массив будет перенесён в памяти в другое место — смещения относительно начала (как и индексы) будут к этому нечувствительны!!!
2) Поменять местами первые два элемента — указатель (значение в NullFreeSpace) будет ненулевой, если есть место в пуле, а если нет, то нулевой!!!
3) Хранить данные и смещения в одном массиве — это даст некоторое упрощение и экономию памяти!!!
4) И несколько спорное предложение — увеличивать пул не в 2 раза, а на некоторое минимальное значение (гранулярность), например добавлять 16 свободных элементов!!!
Posted via RSDN NNTP Server 1.9