Библиотека управления памятью
Умные указатели (начиная с 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) | создаёт объект указанного типа посредством конструирования с использованием аллокатора (шаблон функции) |
|
(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++23)
Определён в заголовочном файле <memory> |
|
|---|---|
|
(C++23) | неявно создаёт объекты в заданной области памяти, повторно используя представление объекта (шаблон функции) |
Типы для проектирования составных классов (начиная с C++26)
Определён в заголовочном файле <memory> |
|
|---|---|
|
(C++26) | обёртка, содержащая динамически выделяемый объект и обладающая семантикой значения (шаблон класса) |
|
(C++26) | полиморфная обёртка, содержащая динамически выделяемый объект и обладающая семантикой значения (шаблон класса) |
Разное
Определён в заголовочном файле <memory> |
|
|---|---|
|
(C++11) | предоставляет информацию о типах, подобных указателям (шаблон класса) |
|
(C++20) | получает обычный указатель из типа, подобного указателю (шаблон функции) |
|
(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) | возвращает текущую модель безопасности указателей (функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/memory