Sí. Un allocator
es una forma de factorizar la asignación de memoria desde el uso de la memoria. Si un contenedor necesita un poco de memoria, en lugar de:
// too rigid, cannot allow custom allocation schemes
void* mem = ::operator new(someAmount);
Se obtiene:
// flexible, allows custom allocation schemes
void* mem = myallocator.allocate(someAmount);
No es un asignador estándar, std::allocator
, que utiliza operator new
mundial y operator delete
.
Desea utilizar su propio asignador en cualquier momento que necesite asignar de una manera especial. Estos casos pueden ser: obtener memoria de algunos freelist, asignar de la pila, etc. (generalmente para fines de optimización, aunque también puede registrar estadísticas con un asignador personalizado). La mayoría de las veces, el asignador estándar funciona perfectamente.