Posto da Discord.
Ho implementato un pool allocator dinamico. È un pool allocator classico con l'aggiunta che se è pieno e ho ancora spazio nello spazio di indirizzi che mi sono riservato all'inizializzazione mi committo qualche pagina e vi inizializzo le celle appendendole alla lista degli slot liberi.
Manca la contrazione da implementare, ovvero il deallocare la memoria che sta in fondo e non è usata. Dovrebbe avere un bel costo temporale, dato che la lista degli slot liberi non è ordinata.
https://bitbucket.org/theGiallo/parsifal/src/master/src/tests/pool_allocator_generic_vm_test.cpp
Pareri?
Nel caso vi steste chiedendo come mai ho usato signed per le capacity e occupancy: in alcuni casi uso il valore -1
come speciale e in altri faccio confronti con signed. In alcuni casi non è detto che non potrei passare a unsigned, dovrei ricontrollare.
https://bitbucket.org/theGiallo/parsifal/src/master/src/pool_allocator_generic_vm.h
https://bitbucket.org/theGiallo/parsifal/src/master/src/pool_allocator_generic_vm.cpp