W menedżerze pamięci (nazywanym przeze mnie ‟menedżerem bloków”), którego źródła znajdują się tutaj, przydzielam bloki pamięci o dowolnej lokalizacji i rozmiarze na “stercie”. W szczególności bloki będące napisami tekstowymi, które nie są rozmiarem wyrównane do rozmiaru słowa procesora. W ten sposób tworzą się nie przydzielone małe fragmenty na “stercie” zlokalizowane pomiędzy przydzielonymi blokami. Te małe wolne bloki muszą być zapisane w tablicy wolnych bloków, by po zwolnieniu bloku poprzedzającego nie zostały zgubione i mogły zostać tym razem ewentualnie przydzielone. Jednak wiele z tych fragmentów zajmuje mniej miejsca niż wpis w tablicy wolnych bloków (a tak samo – mniej miejsca niż wpis w tablicy przydzielonych bloków). Poniżej jest ilustracja tej sytuacji:

Wiem, że by wyeliminować to marnotrawstwo pamięci na tablicę wolnych bloków, można by przydzielać zawsze bloki wyrównane do rozmiaru słowa procesora (lub więcej)… i wtedy marnować pamięć “sterty”.
Jak rozwiązać ten problem polegający na tym, że wpis o wolnym/przydzielonym bloku zajmuje więcej niż wolny/przydzielony blok? I na przykład występuje duża fragmentacja pamięci, tablica wolnych bloków ‚puchnie’ szybciej niż pojawiająca się wolna pamięć. Może zastosować jakiś algorytm mieszany z przydzielaniem wyrównanym do wielokrotności rozmiaru wpisu w tablicy wolnych/przydzielonych bloków? Ale jak, skoro muszę pamiętać wolne bloki?