Предположим имеется такая схема памяти с точки зрения аллокатора:
| 1 |
| 2 || 3 |
|4||5||6||7|
В основном, для учёта блоков используется битовая карта.
Для быстрого нахождения свободного блока используется двусвязный список.
И я предполагаю, что у нас есть три двусвязных списка, содержащие индексы свободных блоков каждого размера.
В этом случае, при выделении блока 2, следует удалить блоки 4 и 5 из двусвязного списка, но проблема в том, что порядок элементов в списке может быть произвольным, 4 и 5 не обязательно будут идти в начале. (Да и даже если бы они шли в правильном порядке, то пришлось бы каждый раз перебирать элементы списка, прежде чем были бы найдены элементы ответственные за 4 и 5).
Так как же организовать работу с двусвязным списком что-бы избежать проблемы при удалении дочерних блоков из списка при выделении их отца?