Gestión de memoria dinámica
[editar] Punteros inteligentes
Los punteros inteligentes permiten la gestión del tiempo de vida de los objetos de forma automática y segura frente a excepciones.
Definido en el archivo de encabezado
<memory> | |
Categorías de punteros | |
(C++11) |
Puntero inteligente con semántica de posesión de objeto única. (plantilla de clase) |
(C++11) |
Puntero inteligente con semántica de posesión de objeto compartida. (plantilla de clase) |
(C++11) |
Referencia débil a un objeto gestionado por std::shared_ptr. (plantilla de clase) |
(eliminado en C++17) |
Puntero inteligente con semántica de propiedad de objetos estricta. (plantilla de clase) |
Clases auxiliares | |
(C++11) |
Proporciona un orden de tipo mixto basado en propietario de los punteros compartidos y débiles. (plantilla de clase) |
(C++11) |
Permite a un objeto crear un puntero compartido (shared_ptr ) refiriéndose a sí mismo. (plantilla de clase) |
(C++11) |
Excepción lanzada cuando se accede a un puntero débil (weak_ptr ) que se refiere a un objeto que ya ha sido destruido. (clase) |
(C++11) |
Eliminador por defecto para un puntero único (unique_ptr ). (plantilla de clase) |
Adaptadores de punteros inteligentes | |
(C++23) |
Interopera con establecedores de punteros externos y restablece un puntero inteligente en la destrucción. (plantilla de clase) |
(C++23) |
Crea un objeto out_ptr_t con un puntero inteligente asociado y los argumentos de restablecimiento. (plantilla de función) |
(C++23) |
Interopera con establecedores de punteros externos, obtiene el valor del puntero inicial de un puntero inteligente y lo restablece en la destrucción. (plantilla de clase) |
(C++23) |
Crea un objeto inout_ptr_t con un puntero inteligente asociado y los argumentos de restablecimiento. (plantilla de función) |
[editar] Asignadores de memoria
Los asignadores son plantillas de clase que encapsulan la estrategia de asignación de memoria. Esto permite a los contenedores genéricos separar la gestión de memoria de los datos mismos.
Definido en el archivo de encabezado
<memory> | |
El asignador de memoria por defecto. (plantilla de clase) | |
(C++11) |
Proporciona información sobre los tipos de asignadores. (plantilla de clase) |
(C++23) |
Registra la dirección y el tamaño real del almacenamiento asignado por allocate_at_least . (plantilla de clase) |
(C++23) |
Asigna almacenamiento al menos tan grande como el tamaño solicitado a trav��s de un asignador de memoria. (plantilla de función) |
(C++11) |
Tipo de etiqueta utilizado para seleccionar sobrecargas de constructores conscientes de asignador. (clase) |
(C++11) |
Un objeto de tipo std::allocator_arg_t utilizado para seleccionar constructores conscientes de asignador. (constante) |
(C++11) |
Comprueba si el tipo especificado admite construcción con uso de asignador. (plantilla de clase) |
Prepara la lista de argumentos que coincide con el tipo de construcción con uso de asignador requerida por el tipo dado. (plantilla de función) | |
(C++20) |
Crea un objeto del tipo dado mediante la construcción con uso de asignador. (plantilla de función) |
Crea un objeto del tipo dado en la ubicación de memoria especificada por medio de la construcción con uso de asignador. (plantilla de función) | |
Definido en el archivo de encabezado
<scoped_allocator> | |
(C++11) |
Implementa un asignador multinivel para contenedores multinivel. (plantilla de clase) |
Definido en el archivo de encabezado
<memory_resource> | |
Definido en el espacio de nombres
std::pmr | |
(C++17) |
Un asignador que admite polimorfismo en tiempo de ejecución basado en el recurso de memoria std::memory_resource con el que se construye. (plantilla de clase) |
[editar] Recursos de memoria
Los recursos de memoria implementan estrategias de asignación de memoria que pueden usarse por std::pmr::polymorphic_allocator
Definido en el archivo de encabezado
<memory_resource> | |
Definido en el espacio de nombres
pmr | |
(C++17) |
Una interfaz abstracta para clases que encapsulan recursos de memoria. (clase) |
(C++17) |
Devuelve un recurso de memoria std::pmr::memory_resource estático a lo largo del programa que utiliza los operadores globales operator new y operator delete para asignar y desasignar memoria. (función) |
(C++17) |
Devuelve un recurso de memoria std::pmr::memory_resource estático que no realiza asignaciones. (función) |
(C++17) |
Obtiene el recurso de memoria std::pmr::memory_resource por defecto. (función) |
(C++17) |
Establece el recurso de memoria std::pmr::memory_resource por defecto. (función) |
(C++17) |
Un conjunto de opciones de constructor para reservas de recursos. (clase) |
(C++17) |
Un recurso de memoria std::pmr::memory_resource seguro contra hilos para gestionar asignaciones en reservas con diferentes tamaños de bloques. (clase) |
(C++17) |
Un recurso de memoria std::pmr::memory_resource que no es seguro contra hilos para gestionar asignaciones en reservas con diferentes tamaños de bloques. (clase) |
(C++17) |
Un recurso de memoria std::pmr::memory_resource de propósito especial, que libera la memoria asignada solamente cuando el recurso se destruye. (clase) |
[editar] Almacenamiento no inicializado
Se proporcionan varias utilerías para crear y acceder a almacenamiento sin formato.
Definido en el archivo de encabezado
<memory> | |
(en desuso en C++17)(eliminado en C++20) |
Un iterador que permite a los algoritmos estándar almacenar los resultados en memoria sin inicializar. (plantilla de clase) |
(en desuso en C++17)(eliminado en C++20) |
Obtiene almacenamiento sin inicializar. (plantilla de función) |
(en desuso en C++17)(eliminado en C++20) |
Libera almacenamiento sin inicializar. (plantilla de función) |
[editar] Algoritmos de memoria no inicializada
Definido en el archivo de encabezado
<memory> | |
Copia un rango de objetos a una zona de memoria sin inicializar. (plantilla de función) | |
(C++11) |
Copia un número de objetos a un área de memoria sin inicializar. (plantilla de función) |
Copia un objeto a una zona de memoria sin inicializar, definido por un rango. (plantilla de función) | |
Copia un objeto a una zona de memoria sin inicializar, definido por un inicio y una cuenta. (plantilla de función) | |
(C++17) |
Mueve un rango de objetos a un área de memoria sin inicializar. (niebloid) |
(C++17) |
Mueve un número de objetos a un área de memoria sin inicializar. (niebloid) |
Construye objetos mediante la inicialización por defecto en un área de memoria sin inicializar, definido por un rango. (plantilla de función) | |
Construye objetos mediante la inicialización por defecto en un área de memoria sin inicializar, definido por un inicio y una cuenta. (plantilla de función) | |
Construye objetos mediante la inicialización de un valor en un área de memoria sin inicializar, definido por un rango. (niebloid) | |
Construye objetos mediante la inicialización de un valor en un área de memoria sin inicializar, definido por un inicio y una cuenta. (niebloid) | |
(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) |
(C++20) |
Crea un objeto en una dirección dada (plantilla de función) |
[editar] Algoritmos restringidos de memoria no inicializada (C++20)
C++20 proporciona algoritmos de memoria sin inicializar restringidos que aceptan argumentos de rango o pares iterador-centinela.
Definido en el archivo de encabezado
<memory> | |
Definido en el espacio de nombres
std::ranges | |
Especifica que algunas operaciones en iteradores, centinelas y rangos no lanzan excepciones. (concepto solo de exposición) | |
(C++20) |
Copia un rango de objetos a un área de memoria sin inicializar. (niebloid) |
(C++20) |
Copia un número de objetos a un área de memoria sin inicializar. (niebloid) |
(C++20) |
Copia un objeto en un área de memoria sin inicializar, definido por un rango. (niebloid) |
(C++20) |
Copia un objeto a un área de memoria sin inicializar, definido por un inicio y una cuenta. (niebloid) |
(C++20) |
Mueve un rango de objetos a un área de memoria sin inicializar. (niebloid) |
(C++20) |
Mueve un número de objetos a un área de memoria sin inicializar. (niebloid) |
Construye objetos mediante la
inicialización por defecto en un área de memoria sin inicializar, definido por un rango. | |
(niebloid) | |
Construye objetos mediante la inicialización de un valor en un área de memoria sin inicializar, definido por un rango. (niebloid) | |
Construye objetos mediante la inicialización de un valor en un área de memoria sin inicializar, definido por un inicio y una cuenta. (niebloid) | |
(C++20) |
Destruye un objeto en una dirección dada. (niebloid) |
(C++20) |
Destruye un rango de objetos. (niebloid) |
(C++20) |
Destruye un número de objetos en un rango. (niebloid) |
(C++20) |
Crea un objeto en una dirección dada (niebloid) |
[editar] Apoyo de recolección de basura
Definido en el archivo de 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 una zona 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) |
Lista los modelos de seguridad de puntero. (clase) |
(C++11)(eliminado en C++23) |
Devuelve el modelo actual de seguridad de puntero. (función) |
[editar] Misceláneos
Definido en el archivo de encabezado
<memory> | |
(C++11) |
Proporciona información sobre tipos similares a punteros. (plantilla de clase) |
(C++20) |
Obtiene un puntero sin formato de un tipo similar a un 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) |
(C++20) |
Informa al compilador que un puntero está alineado. (plantilla de función) |
[editar] Gestión de memoria estilo C
Incluye, p. ej., std::malloc, std::free
[editar] Gestión de memoria de bajo nivel
Incluye, p. ej., operator new
, operator delete
, std::set_new_handler