Asignador

Un  asignador o asignador de memoria en el lenguaje de programación C++ es  una clase especializada que implementa y encapsula detalles insignificantes (desde un punto de vista aplicado) de asignación y liberación de recursos de memoria de la computadora.

Descripción

Todas las clases de la biblioteca de plantillas estándar de STL administran la memoria mediante asignadores integrados. La especificación explícita de un asignador no es un requisito para las clases de contenedor de biblioteca, pero se pueden pasar a los constructores como parámetros de plantilla [1] . El motivo de la introducción del mecanismo de asignación en la biblioteca STL fue la necesidad de abstraerse de las limitaciones del modelo de memoria de la computadora al diseñar plantillas [2] .

Además de esto, muchas clases de biblioteca estándar brindan la capacidad de incluir implementaciones de asignador personalizadas en lugar de las del sistema. Se observa que los asignadores estándar a menudo se basan en el uso de sutilezas de lenguaje no formalizado y, por lo tanto, causan la mayoría de los problemas para garantizar la portabilidad del código entre plataformas [3] .

Sintaxis

El tipo del valor del asignador determina el tipo de objeto para el que se asigna la memoria. Si el tipo dado es T, llamar a una función miembro allocate(n)le permite generar una solicitud para asignar espacio en la memoria de la máquina para almacenar nobjetos de tipo T[4] .

Una vez declarados y asignados, los objetos con un asignador no estándar no son diferentes de otros objetos, pero se desaconseja encarecidamente mezclarlos debido a las consecuencias impredecibles. Para identificar objetos con diferentes tipos de asignación de memoria, puede utilizar las funciones de acceso de asignador estándar get_allocator()en combinación con la operación de comparación ==[5] .

Notas

  1. Ostern, 2004 , Asignadores, p. 96.
  2. G. Andreas, F. Masur Asignadores (STL) www.codeguru.com, 2004
  3. Ostern, 2004 , Asignador, p. 176-177.
  4. Ostern, 2004 , Asignador, p. 178.
  5. Josyutis, 2004 , Uso de asignadores en la programación de aplicaciones, p. 701-702.

Fuentes