El asignador de pila (stack allocator) es una técnica de optimización de memoria que sustituye las llamadas complejas de asignación por operaciones aritméticas simples, como la suma de enteros. Su principal ventaja es la velocidad extrema en la asignación y liberación de memoria, lo que elimina el tiempo de latencia asociado a los sistemas de gestión de memoria tradicionales. Esta técnica es especialmente útil en aplicaciones de alto rendimiento, como los videojuegos, donde la memoria se asigna y libera constantemente durante cada fotograma, o en sistemas de procesamiento de datos en tiempo real.
La implementación básica consiste en reservar un bloque de memoria fijo y mantener un puntero que indica la posición actual (tos). La asignación se realiza simplemente sumando el tamaño requerido a este puntero, y la liberación se resuelve restando o reiniciando el puntero. Aunque eficiente, esta variante simple no gestiona destructores de objetos complejos y puede presentar problemas de fragmentación en entornos multi-hilo si los sistemas de asignación operan de forma independiente.
Para resolver la fragmentación de memoria en escenarios donde dos sistemas compiten por recursos, como la geometría del nivel y el personaje en un juego, se emplea el asignador de pila doble cabecera. Este sistema utiliza dos punteros que crecen en direcciones opuestas: uno desde el inicio y otro desde el final del bloque de memoria. Cuando los punteros se cruzan, se indica que la memoria está agotada. Esta estructura permite que cada sistema libere y realoque su memoria sin generar fragmentación, ya que cada sistema puede reiniciar su puntero al inicio o al final del bloque. Además, permite la asignación parcial y el acceso aleatorio a objetos de tamaño variable, lo que la hace versátil para almacenar comandos de red o datos de animación con tamaños dinámicos en regiones de memoria limitadas.
