Пространства имён
Варианты
Действия

Управление динамической памятью

Материал из cppreference.com
< cpp
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования функциональности библиотеки (C++20)    
Управление динамической памятью
Программные утилиты
Поддержка сопрограмм (C++20)
Вариативные функции
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Дата и время
Функциональные объекты
Библиотека форматирования (C++20)
(C++11)
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)    
(C++20)
Операции обмена и типа
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Элементарные преобразования строк
(C++17)
(C++17)
 
Динамическое управление памятью
no section name
Ограниченные алгоритмы неинициализированной памяти
no section name
Поддержка сбора мусора
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)



no section name
 

Содержание

[править] Умные указатели

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

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

[править] Аллокаторы

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

Определены в заголовочном файле <memory>
аллокатор по умолчанию
(шаблон класса) [править]
предоставляет информацию о типах аллокаторов
(шаблон класса) [править]
записывает адрес и фактический размер памяти, выделенной allocate_at_least
(шаблон класса) [править]
объект типа std::allocator_arg_t, используемый для выбора конструкторов с учётом аллокатора
(константа) [править]
проверяет, поддерживает ли указанный тип конструирование с uses_allocator
(шаблон класса) [править]
подготавливает список аргументов, соответствующий варианту создания с использованием аллокатора, требуемый данным типом
(шаблон функции) [править]
создаёт объект данного типа с помощью конструирования с использованием аллокатора
(шаблон функции) [править]
создаёт объект данного типа в указанной области памяти с помощью конструирования с использованием аллокатора
(шаблон функции) [править]
Определены в заголовочном файле <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>
(не рекомендуется в C++17)(удалено в C++20)
итератор, который позволяет стандартным алгоритмам сохранять результаты в неинициализированной памяти
(шаблон класса) [править]
(не рекомендуется в C++17)(удалено в C++20)
получает неинициализированную память
(шаблон функции) [править]
(не рекомендуется в C++17)(удалено в C++20)
освобождает неинициализированное хранилище
(шаблон функции) [править]

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

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

[править] Ограниченные алгоритмы неинициализированной памяти (начиная с C++20)

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

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

[править] Поддержка сборщика мусора (начиная с 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)
возвращает текущую модель безопасности указателя
(функция) [править]

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

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

[править] Разное

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

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

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

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

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

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

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