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)

Содержание

Умные указатели (since C++11)

Умные указатели обеспечивают автоматическое, безопасное с точки зрения исключений управление временем жизни объектов.

Определено в заголовочном файле <memory>
Категории указателей
(C++11)
умный указатель с семантикой уникального владения объектом
(шаблон класса)
(C++11)
умный указатель с семантикой разделяемого владения объектом
(шаблон класса)
(C++11)
слабая ссылка на объект, управляемый std::shared_ptr
(шаблон класса)
(устарел в C++11) (удален в C++17)
умный указатель со строгой семантикой владения объектом
(шаблон класса)
Вспомогательные классы
(C++11)
предоставляет смешанное владельческое упорядочивание shared и weak указателей
(шаблон класса)
(C++26)
предоставляет владельческое хеширование для shared и weak указателей
(класс)
предоставляет смешанное владельческое сравнение на равенство shared и weak указателей
(класс)
позволяет объекту создавать shared_ptr ссылающийся на себя
(шаблон класса)
исключение, выбрасываемое при обращении к weak_ptr который ссылается на уже уничтоженный объект
(класс)
удалитель по умолчанию для unique_ptr
(шаблон класса)
Адаптеры умных указателей (начиная с C++23)
(C++23)
взаимодействует с внешними установщиками указателей и сбрасывает умный указатель при уничтожении
(шаблон класса)
(C++23)
создает out_ptr_t с ассоциированным умным указателем и аргументами сброса
(шаблон функции)
взаимодействует с внешними установщиками указателей, получает начальное значение указателя из умного указателя и сбрасывает его при уничтожении
(шаблон класса)
(C++23)
создает inout_ptr_t с ассоциированным умным указателем и аргументами сброса
(шаблон функции)

Аллокаторы

Аллокаторы - это шаблоны классов, инкапсулирующие стратегию выделения памяти. Это позволяет универсальным контейнерам отделить управление памятью от самих данных.

Определено в заголовочном файле <memory>
аллокатор по умолчанию
(шаблон класса)
предоставляет информацию о типах аллокаторов
(шаблон класса)
записывает адрес и фактический размер памяти, выделенной с помощью allocate_at_least
(шаблон класса)
тег, используемый для выбора конструкторов с поддержкой аллокаторов
(тег)
проверяет, поддерживает ли указанный тип конструкцию с использованием аллокатора
(шаблон класса)
подготавливает список аргументов, соответствующий варианту конструкции с использованием аллокатора, требуемому данным типом
(шаблон функции)
создает объект заданного типа посредством конструкции с использованием аллокатора
(шаблон функции)
создает объект заданного типа в указанном месте памяти посредством конструкции с использованием аллокатора
(шаблон функции)
Определено в заголовочном файле <scoped_allocator>
реализует многоуровневый аллокатор для многоуровневых контейнеров
(шаблон класса)
Определено в заголовочном файле <memory_resource>
Определено в пространстве имен std::pmr
аллокатор, поддерживающий полиморфизм времени выполнения на основе std::pmr::memory_resource с которым он создан
(шаблон класса)

Ресурсы памяти (начиная с C++17)

Ресурсы памяти реализуют стратегии выделения памяти, которые могут использоваться std::pmr::polymorphic_allocator .

Определено в заголовочном файле <memory_resource>
Определено в пространстве имен std::pmr
абстрактный интерфейс для классов, инкапсулирующих ресурсы памяти
(класс)
возвращает статический ресурс памяти для всей программы std::pmr::memory_resource который использует глобальные operator new и operator delete для выделения и освобождения памяти
(функция)
возвращает статический std::pmr::memory_resource который не выполняет выделения памяти
(функция)
получает ресурс памяти по умолчанию std::pmr::memory_resource
(функция)
устанавливает ресурс памяти по умолчанию std::pmr::memory_resource
(функция)
набор параметров конструктора для ресурсов пула
(класс)
потокобезопасный std::pmr::memory_resource для управления выделением памяти в пулах с разными размерами блоков
(класс)
непотокобезопасный std::pmr::memory_resource для управления выделением памяти в пулах с разными размерами блоков
(класс)
специализированный std::pmr::memory_resource который освобождает выделенную память только при уничтожении ресурса
(класс)

Алгоритмы для неинициализированной памяти

Определено в заголовочном файле <memory>
копирует диапазон объектов в неинициализированную область памяти
(шаблон функции)
копирует указанное количество объектов в неинициализированную область памяти
(шаблон функции)
копирует объект в неинициализированную область памяти, определяемую диапазоном
(шаблон функции)
копирует объект в неинициализированную область памяти, определяемую началом и количеством
(шаблон функции)
перемещает диапазон объектов в неинициализированную область памяти
(шаблон функции)
перемещает указанное количество объектов в неинициализированную область памяти
(шаблон функции)
конструирует объекты с помощью default-initialization в неинициализированной области памяти, определяемой диапазоном
(шаблон функции)
конструирует объекты с помощью default-initialization в неинициализированной области памяти, определяемой началом и количеством
(шаблон функции)
конструирует объекты с помощью value-initialization в неинициализированной области памяти, определяемой диапазоном
(шаблон функции)
конструирует объекты с помощью value-initialization в неинициализированной области памяти, определяемой началом и количеством
(шаблон функции)
(C++17)
уничтожает объект по заданному адресу
(шаблон функции)
(C++17)
уничтожает диапазон объектов
(шаблон функции)
(C++17)
уничтожает указанное количество объектов в диапазоне
(шаблон функции)
создает объект по заданному адресу
(шаблон функции)

Алгоритмы работы с неинициализированной памятью с ограничениями (since C++20)

C++20 предоставляет ограниченные алгоритмы для неинициализированной памяти, которые принимают аргументы диапазонов или пары итератор-страж.

Определено в заголовке <memory>
Определено в пространстве имён std::ranges
определяет, что некоторые операции над итераторами, сторожевыми значениями и диапазонами не генерируют исключения
( концепция только для демонстрации* )
копирует диапазон объектов в неинициализированную область памяти
(функциональный объект алгоритма)
копирует указанное количество объектов в неинициализированную область памяти
(функциональный объект алгоритма)
копирует объект в неинициализированную область памяти, определяемую диапазоном
(функциональный объект алгоритма)
копирует объект в неинициализированную область памяти, определяемую началом и количеством
(функциональный объект алгоритма)
перемещает диапазон объектов в неинициализированную область памяти
(функциональный объект алгоритма)
перемещает указанное количество объектов в неинициализированную область памяти
(функциональный объект алгоритма)
конструирует объекты с помощью default-initialization в неинициализированной области памяти, определяемой диапазоном
(функциональный объект алгоритма)
конструирует объекты с помощью default-initialization в неинициализированной области памяти, определяемой началом и количеством
(функциональный объект алгоритма)
конструирует объекты с помощью value-initialization в неинициализированной области памяти, определяемой диапазоном
(функциональный объект алгоритма)
конструирует объекты с помощью value-initialization в неинициализированной области памяти, определяемой началом и количеством
(функциональный объект алгоритма)
уничтожает объект по заданному адресу
(функциональный объект алгоритма)
уничтожает диапазон объектов
(функциональный объект алгоритма)
уничтожает указанное количество объектов в диапазоне
(функциональный объект алгоритма)
создаёт объект по заданному адресу
(функциональный объект алгоритма)

Явное управление временем жизни (since C++23)

Определено в заголовке <memory>
неявно создает объекты в заданной области памяти с повторным использованием представления объекта
(шаблон функции)

Типы для композитного проектирования классов (since C++26)

Определено в заголовочном файле <memory>
(C++26)
обёртка, содержащая динамически выделяемый объект с семантикой значения
(шаблон класса)
полиморфная обёртка, содержащая динамически выделяемый объект с семантикой значения
(шаблон класса)

Разное

Определено в заголовочном файле <memory>
предоставляет информацию о pointer-like типах
(шаблон класса)
(C++20)
получает сырой указатель из pointer-like типа
(шаблон функции)
(C++11)
получает фактический адрес объекта, даже если оператор & перегружен
(шаблон функции)
(C++11)
выравнивает указатель в буфере
(функция)
информирует компилятор, что указатель выровнен
(шаблон функции)
проверяет, указывает ли указатель на объект, выравнивание которого имеет как минимум заданное значение
(шаблон функции)

Низкоуровневое управление памятью

Включает, например, operator new , operator delete , std::set_new_handler .

Определено в заголовке <new>

Управление памятью в стиле C

Включает, например, std::malloc , std::free .

Определено в заголовочном файле <cstdlib>

Неинициализированное хранилище (до C++20)

Предоставлено несколько утилит для создания и доступа к необработанному хранилищу.

Определено в заголовочном файле <memory>
(устарело в C++17) (удалено в C++20)
итератор, который позволяет стандартным алгоритмам сохранять результаты в неинициализированной памяти
(шаблон класса)
(устарело в C++17) (удалено в C++20)
получает неинициализированное хранилище
(шаблон функции)
(устарело в C++17) (удалено в C++20)
освобождает неинициализированное хранилище
(шаблон функции)

Поддержка сборщика мусора (до C++23)

Определено в заголовке <memory>
(C++11) (удалено в C++23)
объявляет, что объект не может быть переработан
(функция)
(C++11) (удалено в C++23)
объявляет, что объект может быть переработан
(шаблон функции)
(C++11) (удалено в C++23)
объявляет, что область памяти не содержит отслеживаемых указателей
(функция)
(C++11) (удалено в C++23)
отменяет эффект std::declare_no_pointers
(функция)
(C++11) (удалено в C++23)
перечисляет модели безопасности указателей
(перечисление)
(C++11) (удалено в C++23)
возвращает текущую модель безопасности указателей
(функция)