Pool allocator
Un allocatore che divide un buffer in blocchi uguali collegati in una free list e li assegna in qualsiasi ordine in tempo costante.
Quando un programma crea e distrugge di continuo oggetti della stessa dimensione, come proiettili, particelle o entità, un heap generico è lento e soggetto a frammentazione. Un pool allocator suddivide in anticipo il buffer in blocchi di dimensione fissa e collega quelli liberi in una semplice lista concatenata. Allocare significa estrarre il primo blocco libero; liberare significa rimetterlo in testa. Entrambe le operazioni sono O(1).
Poiché tutti i blocchi hanno la stessa dimensione, possono essere riutilizzati in qualsiasi ordine senza lasciare buchi in cui nulla entra: la frammentazione scompare per costruzione. Il meccanismo non va confuso con l'object pooling, che è la stessa idea un livello più in alto: lì si riutilizzano oggetti di gioco già finiti, qui blocchi di memoria grezza.