Memory management library
Умные указатели (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 указателей
(класс) |
|
(C++26)
|
предоставляет смешанное владельческое сравнение на равенство shared и weak указателей
(класс) |
|
(C++11)
|
позволяет объекту создавать
shared_ptr
ссылающийся на себя
(шаблон класса) |
|
(C++11)
|
исключение, выбрасываемое при обращении к
weak_ptr
который ссылается на уже уничтоженный объект
(класс) |
|
(C++11)
|
удалитель по умолчанию для
unique_ptr
(шаблон класса) |
Адаптеры умных указателей (начиная с C++23) |
|
|
(C++23)
|
взаимодействует с внешними установщиками указателей и сбрасывает умный указатель при уничтожении
(шаблон класса) |
|
(C++23)
|
создает
out_ptr_t
с ассоциированным умным указателем и аргументами сброса
(шаблон функции) |
|
(C++23)
|
взаимодействует с внешними установщиками указателей, получает начальное значение указателя из умного указателя и сбрасывает его при уничтожении
(шаблон класса) |
|
(C++23)
|
создает
inout_ptr_t
с ассоциированным умным указателем и аргументами сброса
(шаблон функции) |
Аллокаторы
Аллокаторы - это шаблоны классов, инкапсулирующие стратегию выделения памяти. Это позволяет универсальным контейнерам отделить управление памятью от самих данных.
|
Определено в заголовочном файле
<memory>
|
|
|
аллокатор по умолчанию
(шаблон класса) |
|
|
(C++11)
|
предоставляет информацию о типах аллокаторов
(шаблон класса) |
|
(C++23)
|
записывает адрес и фактический размер памяти, выделенной с помощью
allocate_at_least
(шаблон класса) |
|
(C++11)
|
тег, используемый для выбора конструкторов с поддержкой аллокаторов
(тег) |
|
(C++11)
|
проверяет, поддерживает ли указанный тип конструкцию с использованием аллокатора
(шаблон класса) |
|
(C++20)
|
подготавливает список аргументов, соответствующий варианту конструкции с использованием аллокатора, требуемому данным типом
(шаблон функции) |
|
(C++20)
|
создает объект заданного типа посредством конструкции с использованием аллокатора
(шаблон функции) |
|
создает объект заданного типа в указанном месте памяти посредством конструкции с использованием аллокатора
(шаблон функции) |
|
|
Определено в заголовочном файле
<scoped_allocator>
|
|
|
(C++11)
|
реализует многоуровневый аллокатор для многоуровневых контейнеров
(шаблон класса) |
|
Определено в заголовочном файле
<memory_resource>
|
|
|
Определено в пространстве имен
std::pmr
|
|
|
(C++17)
|
аллокатор, поддерживающий полиморфизм времени выполнения на основе
std::pmr::memory_resource
с которым он создан
(шаблон класса) |
Ресурсы памяти (начиная с C++17)
Ресурсы памяти реализуют стратегии выделения памяти, которые могут использоваться std::pmr::polymorphic_allocator .
|
Определено в заголовочном файле
<memory_resource>
|
|
|
Определено в пространстве имен
std::pmr
|
|
|
(C++17)
|
абстрактный интерфейс для классов, инкапсулирующих ресурсы памяти
(класс) |
|
(C++17)
|
возвращает статический ресурс памяти для всей программы
std::pmr::memory_resource
который использует глобальные
operator new
и
operator delete
для выделения и освобождения памяти
(функция) |
|
(C++17)
|
возвращает статический
std::pmr::memory_resource
который не выполняет выделения памяти
(функция) |
|
(C++17)
|
получает ресурс памяти по умолчанию
std::pmr::memory_resource
(функция) |
|
(C++17)
|
устанавливает ресурс памяти по умолчанию
std::pmr::memory_resource
(функция) |
|
(C++17)
|
набор параметров конструктора для ресурсов пула
(класс) |
|
(C++17)
|
потокобезопасный
std::pmr::memory_resource
для управления выделением памяти в пулах с разными размерами блоков
(класс) |
|
(C++17)
|
непотокобезопасный
std::pmr::memory_resource
для управления выделением памяти в пулах с разными размерами блоков
(класс) |
|
(C++17)
|
специализированный
std::pmr::memory_resource
который освобождает выделенную память только при уничтожении ресурса
(класс) |
Алгоритмы для неинициализированной памяти
|
Определено в заголовочном файле
<memory>
|
|
|
копирует диапазон объектов в неинициализированную область памяти
(шаблон функции) |
|
|
(C++11)
|
копирует указанное количество объектов в неинициализированную область памяти
(шаблон функции) |
|
копирует объект в неинициализированную область памяти, определяемую диапазоном
(шаблон функции) |
|
|
копирует объект в неинициализированную область памяти, определяемую началом и количеством
(шаблон функции) |
|
|
(C++17)
|
перемещает диапазон объектов в неинициализированную область памяти
(шаблон функции) |
|
(C++17)
|
перемещает указанное количество объектов в неинициализированную область памяти
(шаблон функции) |
|
(C++17)
|
конструирует объекты с помощью
default-initialization
в неинициализированной области памяти, определяемой диапазоном
(шаблон функции) |
|
конструирует объекты с помощью
default-initialization
в неинициализированной области памяти, определяемой началом и количеством
(шаблон функции) |
|
|
(C++17)
|
конструирует объекты с помощью
value-initialization
в неинициализированной области памяти, определяемой диапазоном
(шаблон функции) |
|
(C++17)
|
конструирует объекты с помощью
value-initialization
в неинициализированной области памяти, определяемой началом и количеством
(шаблон функции) |
|
(C++17)
|
уничтожает объект по заданному адресу
(шаблон функции) |
|
(C++17)
|
уничтожает диапазон объектов
(шаблон функции) |
|
(C++17)
|
уничтожает указанное количество объектов в диапазоне
(шаблон функции) |
|
(C++20)
|
создает объект по заданному адресу
(шаблон функции) |
Алгоритмы работы с неинициализированной памятью с ограничениями (since C++20)
C++20 предоставляет ограниченные алгоритмы для неинициализированной памяти, которые принимают аргументы диапазонов или пары итератор-страж.
|
Определено в заголовке
<memory>
|
|
|
Определено в пространстве имён
std::ranges
|
|
|
определяет, что некоторые операции над итераторами, сторожевыми значениями и диапазонами не генерируют исключения
( концепция только для демонстрации* ) |
|
|
(C++20)
|
копирует диапазон объектов в неинициализированную область памяти
(функциональный объект алгоритма) |
|
(C++20)
|
копирует указанное количество объектов в неинициализированную область памяти
(функциональный объект алгоритма) |
|
(C++20)
|
копирует объект в неинициализированную область памяти, определяемую диапазоном
(функциональный объект алгоритма) |
|
(C++20)
|
копирует объект в неинициализированную область памяти, определяемую началом и количеством
(функциональный объект алгоритма) |
|
(C++20)
|
перемещает диапазон объектов в неинициализированную область памяти
(функциональный объект алгоритма) |
|
(C++20)
|
перемещает указанное количество объектов в неинициализированную область памяти
(функциональный объект алгоритма) |
|
конструирует объекты с помощью
default-initialization
в неинициализированной области памяти, определяемой диапазоном
(функциональный объект алгоритма) |
|
|
конструирует объекты с помощью
default-initialization
в неинициализированной области памяти, определяемой началом и количеством
(функциональный объект алгоритма) |
|
|
конструирует объекты с помощью
value-initialization
в неинициализированной области памяти, определяемой диапазоном
(функциональный объект алгоритма) |
|
|
конструирует объекты с помощью
value-initialization
в неинициализированной области памяти, определяемой началом и количеством
(функциональный объект алгоритма) |
|
|
(C++20)
|
уничтожает объект по заданному адресу
(функциональный объект алгоритма) |
|
(C++20)
|
уничтожает диапазон объектов
(функциональный объект алгоритма) |
|
(C++20)
|
уничтожает указанное количество объектов в диапазоне
(функциональный объект алгоритма) |
|
(C++20)
|
создаёт объект по заданному адресу
(функциональный объект алгоритма) |
Явное управление временем жизни (since C++23)
|
Определено в заголовке
<memory>
|
|
|
неявно создает объекты в заданной области памяти с повторным использованием представления объекта
(шаблон функции) |
|
Типы для композитного проектирования классов (since C++26)
|
Определено в заголовочном файле
<memory>
|
|
|
(C++26)
|
обёртка, содержащая динамически выделяемый объект с семантикой значения
(шаблон класса) |
|
(C++26)
|
полиморфная обёртка, содержащая динамически выделяемый объект с семантикой значения
(шаблон класса) |
Разное
|
Определено в заголовочном файле
<memory>
|
|
|
(C++11)
|
предоставляет информацию о pointer-like типах
(шаблон класса) |
|
(C++20)
|
получает сырой указатель из pointer-like типа
(шаблон функции) |
|
(C++11)
|
получает фактический адрес объекта, даже если оператор
&
перегружен
(шаблон функции) |
|
(C++11)
|
выравнивает указатель в буфере
(функция) |
|
(C++20)
|
информирует компилятор, что указатель выровнен
(шаблон функции) |
|
(C++26)
|
проверяет, указывает ли указатель на объект, выравнивание которого имеет как минимум заданное значение
(шаблон функции) |
Низкоуровневое управление памятью
Включает, например, 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)
|
возвращает текущую модель безопасности указателей
(функция) |