Namespaces
Variants

Memory management library

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)

Contenidos

Punteros inteligentes (desde C++11)

Los punteros inteligentes permiten una gestión automática y segura frente a excepciones del ciclo de vida de los objetos.

Definido en el encabezado <memory>
Categorías de punteros
(C++11)
puntero inteligente con semántica de propiedad única de objetos
(plantilla de clase)
(C++11)
puntero inteligente con semántica de propiedad compartida de objetos
(plantilla de clase)
(C++11)
referencia débil a un objeto gestionado por std::shared_ptr
(plantilla de clase)
(obsoleto en C++11) (eliminado en C++17)
puntero inteligente con semántica estricta de propiedad de objetos
(plantilla de clase)
Clases auxiliares
(C++11)
proporciona ordenación basada en propietario de tipos mixtos para punteros shared y weak
(plantilla de clase)
(C++26)
proporciona hash basado en propietario para punteros shared y weak
(clase)
proporciona comparaciones de igualdad basadas en propietario de tipos mixtos para punteros shared y weak
(clase)
permite que un objeto cree un shared_ptr que haga referencia a sí mismo
(plantilla de clase)
excepción lanzada al acceder a un weak_ptr que referencia un objeto ya destruido
(clase)
eliminador predeterminado para unique_ptr
(plantilla de clase)
Adaptadores de punteros inteligentes (desde C++23)
(C++23)
interopera con establecedores de punteros externos y restablece un puntero inteligente al destruirse
(plantilla de clase)
(C++23)
crea un out_ptr_t con un puntero inteligente asociado y argumentos de restablecimiento
(plantilla de función)
interopera con establecedores de punteros externos, obtiene el valor inicial del puntero desde un puntero inteligente y lo restablece al destruirse
(plantilla de clase)
(C++23)
crea un inout_ptr_t con un puntero inteligente asociado y argumentos de restablecimiento
(plantilla de función)

Asignadores

Los allocators son plantillas de clase que encapsulan la estrategia de asignación de memoria. Esto permite que los contenedores genéricos desacoplen la gestión de memoria de los datos en sí.

Definido en el encabezado <memory>
el asignador por defecto
(plantilla de clase)
proporciona información sobre tipos de asignadores
(plantilla de clase)
registra la dirección y el tamaño real de almacenamiento asignado por allocate_at_least
(plantilla de clase)
una etiqueta utilizada para seleccionar constructores conscientes del asignador
(etiqueta)
verifica si el tipo especificado soporta construcción uses-allocator
(plantilla de clase)
prepara la lista de argumentos que coincide con el tipo de construcción uses-allocator requerido por el tipo dado
(plantilla de función)
crea un objeto del tipo dado mediante construcción uses-allocator
(plantilla de función)
crea un objeto del tipo dado en una ubicación de memoria específica mediante construcción uses-allocator
(plantilla de función)
Definido en el encabezado <scoped_allocator>
implementa asignador multinivel para contenedores multinivel
(plantilla de clase)
Definido en el encabezado <memory_resource>
Definido en el espacio de nombres std::pmr
un asignador que soporta polimorfismo en tiempo de ejecución basado en el std::pmr::memory_resource con el que se construye
(plantilla de clase)

Recursos de memoria (desde C++17)

Los recursos de memoria implementan estrategias de asignación de memoria que pueden ser utilizadas por std::pmr::polymorphic_allocator .

Definido en el encabezado <memory_resource>
Definido en el espacio de nombres std::pmr
una interfaz abstracta para clases que encapsulan recursos de memoria
(clase)
retorna un std::pmr::memory_resource estático de ámbito de programa que utiliza el operator new global y el operator delete para asignar y liberar memoria
(función)
retorna un std::pmr::memory_resource estático que no realiza asignaciones
(función)
obtiene el std::pmr::memory_resource predeterminado
(función)
establece el std::pmr::memory_resource predeterminado
(función)
un conjunto de opciones de constructor para recursos de pool
(clase)
un std::pmr::memory_resource seguro para hilos que gestiona asignaciones en pools de diferentes tamaños de bloque
(clase)
un std::pmr::memory_resource no seguro para hilos que gestiona asignaciones en pools de diferentes tamaños de bloque
(clase)
un std::pmr::memory_resource de propósito especial que libera la memoria asignada solo cuando se destruye el recurso
(clase)

Algoritmos de memoria no inicializada

Definido en el encabezado <memory>
copia un rango de objetos a un área de memoria no inicializada
(plantilla de función)
copia un número de objetos a un área de memoria no inicializada
(plantilla de función)
copia un objeto a un área de memoria no inicializada, definida por un rango
(plantilla de función)
copia un objeto a un área de memoria no inicializada, definida por un inicio y un conteo
(plantilla de función)
mueve un rango de objetos a un área de memoria no inicializada
(plantilla de función)
mueve un número de objetos a un área de memoria no inicializada
(plantilla de función)
construye objetos mediante default-initialization en un área de memoria no inicializada, definida por un rango
(plantilla de función)
construye objetos mediante default-initialization en un área de memoria no inicializada, definida por un inicio y un conteo
(plantilla de función)
construye objetos mediante value-initialization en un área de memoria no inicializada, definida por un rango
(plantilla de función)
construye objetos mediante value-initialization en un área de memoria no inicializada, definida por un inicio y un conteo
(plantilla de función)
(C++17)
destruye un objeto en una dirección dada
(plantilla de función)
(C++17)
destruye un rango de objetos
(plantilla de función)
(C++17)
destruye un número de objetos en un rango
(plantilla de función)
crea un objeto en una dirección dada
(plantilla de función)

Algoritmos de memoria no inicializada restringidos (desde C++20)

C++20 proporciona algoritmos de memoria no inicializada con restricciones que aceptan argumentos de rango o pares iterador-centinela.

Definido en el encabezado <memory>
Definido en el espacio de nombres std::ranges
especifica que algunas operaciones en iteradores, centinelas y rangos no lanzan excepciones
( concepto solo para exposición* )
copia un rango de objetos a un área de memoria no inicializada
(objeto función de algoritmo)
copia un número de objetos a un área de memoria no inicializada
(objeto función de algoritmo)
copia un objeto a un área de memoria no inicializada, definida por un rango
(objeto función de algoritmo)
copia un objeto a un área de memoria no inicializada, definida por un inicio y un conteo
(objeto función de algoritmo)
mueve un rango de objetos a un área de memoria no inicializada
(objeto función de algoritmo)
mueve un número de objetos a un área de memoria no inicializada
(objeto función de algoritmo)
construye objetos mediante inicialización por defecto en un área de memoria no inicializada, definida por un rango
(objeto función de algoritmo)
construye objetos mediante inicialización por defecto en un área de memoria no inicializada, definida por un inicio y conteo
(objeto función de algoritmo)
construye objetos mediante inicialización por valor en un área de memoria no inicializada, definida por un rango
(objeto función de algoritmo)
construye objetos mediante inicialización por valor en un área de memoria no inicializada, definida por un inicio y un conteo
(objeto función de algoritmo)
destruye un objeto en una dirección dada
(objeto función de algoritmo)
destruye un rango de objetos
(objeto función de algoritmo)
destruye un número de objetos en un rango
(objeto función de algoritmo)
crea un objeto en una dirección dada
(objeto función de algoritmo)

Gestión explícita del tiempo de vida (desde C++23)

Definido en el encabezado <memory>
crea implícitamente objetos en el almacenamiento dado reutilizando la representación del objeto
(plantilla de función)

Tipos para diseño de clases compuestas (desde C++26)

Definido en el encabezado <memory>
(C++26)
un contenedor que contiene un objeto asignado dinámicamente con semántica de valor
(plantilla de clase)
un contenedor polimórfico que contiene un objeto asignado dinámicamente con semántica de valor
(plantilla de clase)

Misceláneos

Definido en el encabezado <memory>
proporciona información sobre tipos similares a punteros
(plantilla de clase)
(C++20)
obtiene un puntero crudo de un tipo similar a puntero
(plantilla de función)
(C++11)
obtiene la dirección real de un objeto, incluso si el operador & está sobrecargado
(plantilla de función)
(C++11)
alinea un puntero en un búfer
(función)
informa al compilador que un puntero está alineado
(plantilla de función)
comprueba si el puntero apunta a un objeto cuya alineación tiene al menos el valor dado
(plantilla de función)

Gestión de memoria de bajo nivel

Incluye por ejemplo operator new , operator delete , std::set_new_handler .

Definido en el encabezado <new>

Gestión de memoria estilo C

Incluye por ejemplo std::malloc , std::free .

Definido en el encabezado <cstdlib>

Almacenamiento no inicializado (hasta C++20)

Se proporcionan varias utilidades para crear y acceder a almacenamiento sin procesar.

Definido en el encabezado <memory>
(obsoleto en C++17) (eliminado en C++20)
un iterador que permite a los algoritmos estándar almacenar resultados en memoria no inicializada
(plantilla de clase)
(obsoleto en C++17) (eliminado en C++20)
obtiene almacenamiento no inicializado
(plantilla de función)
(obsoleto en C++17) (eliminado en C++20)
libera almacenamiento no inicializado
(plantilla de función)

Soporte para recolector de basura (hasta C++23)

Definido en el encabezado <memory>
(C++11) (eliminado en C++23)
declara que un objeto no puede ser reciclado
(función)
(C++11) (eliminado en C++23)
declara que un objeto puede ser reciclado
(plantilla de función)
(C++11) (eliminado en C++23)
declara que un área de memoria no contiene punteros rastreables
(función)
(C++11) (eliminado en C++23)
cancela el efecto de std::declare_no_pointers
(función)
(C++11) (eliminado en C++23)
enumera los modelos de seguridad de punteros
(enumeración)
(C++11) (eliminado en C++23)
retorna el modelo actual de seguridad de punteros
(función)