Spec-Zone.ru › C++

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

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

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

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

Аллокаторы

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

Определён в заголовочном файле <memory>
allocator
аллокатор по умолчанию
(шаблон класса)
allocator_traits
(C++11)
предоставляет информацию о типах аллокаторов
(шаблон класса)
allocation_result
(C++23)
сохраняет адрес и фактический размер памяти, выделенной с помощью allocate_at_least
(шаблон класса)
allocator_argallocator_arg_t
(C++11)
тег для выбора конструкторов с поддержкой аллокатора
(тег)
uses_allocator
(C++11)
проверяет, поддерживает ли указанный тип конструирование с использованием аллокатора
(шаблон класса)
uses_allocator_construction_args
(C++20)
подготавливает список аргументов, соответствующий требуемому для данного типа варианту конструирования с использованием аллокатора
(шаблон функции)
make_obj_using_allocator
(C++20)
создаёт объект указанного типа посредством конструирования с использованием аллокатора
(шаблон функции)
uninitialized_construct_using_allocator
(C++20)
создаёт объект указанного типа в заданном участке памяти посредством конструирования с использованием аллокатора
(шаблон функции)
Определён в заголовочном файле <scoped_allocator>
scoped_allocator_adaptor
(C++11)
реализует многоуровневый аллокатор для многоуровневых контейнеров
(шаблон класса)
Определён в заголовочном файле <memory_resource>
Определён в пространстве имён std::pmr
polymorphic_allocator
(C++17)
аллокатор, поддерживающий полиморфизм времени выполнения на основе std::pmr::memory_resource, с которым он создан
(шаблон класса)

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

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

Определён в заголовочном файле <memory_resource>
Определён в пространстве имён std::pmr
memory_resource
(C++17)
абстрактный интерфейс для классов, инкапсулирующих ресурсы памяти
(класс)
new_delete_resource
(C++17)
возвращает статический ресурс std::pmr::memory_resource для всей программы, использующий глобальные operator new и operator delete для выделения и освобождения памяти
(функция)
null_memory_resource
(C++17)
возвращает статический std::pmr::memory_resource, не выполняющий выделение памяти
(функция)
get_default_resource
(C++17)
получает ресурс памяти по умолчанию std::pmr::memory_resource
(функция)
set_default_resource
(C++17)
устанавливает ресурс памяти по умолчанию std::pmr::memory_resource
(функция)
pool_options
(C++17)
набор параметров конструктора для пуловых ресурсов
(класс)
synchronized_pool_resource
(C++17)
потокобезопасный std::pmr::memory_resource для управления выделениями памяти в пулах с блоками разных размеров
(класс)
unsynchronized_pool_resource
(C++17)
небезопасный для использования в нескольких потоках std::pmr::memory_resource для управления выделениями памяти в пулах с блоками разных размеров
(класс)
monotonic_buffer_resource
(C++17)
ресурс памяти специального назначения std::pmr::memory_resource, который освобождает выделенную память только при уничтожении ресурса
(класс)

Специализированные алгоритмы <memory>

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

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

Типы для проектирования составных классов (начиная с C++26)

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

Разное

Определён в заголовочном файле <memory>
pointer_traits
(C++11)
предоставляет информацию о типах, подобных указателям
(шаблон класса)
to_address
(C++20)
получает обычный указатель из типа, подобного указателю
(шаблон функции)
addressof
(C++11)
получает фактический адрес объекта, даже если оператор & перегружен
(шаблон функции)
align
(C++11)
выравнивает указатель в буфере
(функция)
assume_aligned
(C++20)
сообщает компилятору, что указатель выровнен
(шаблон функции)
is_sufficiently_aligned
(C++26)
проверяет, указывает ли указатель на объект с выравниванием не меньше заданного значения
(шаблон функции)

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

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

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

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

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

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

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

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

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

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

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/memory

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API