X Tutup
The Wayback Machine - https://web.archive.org/web/20211006205839/https://ru.cppreference.com/w/cpp/memory
Пространства имён
Варианты
Действия

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

Материал из cppreference.com
< cpp
 
 
Библиотека утилит
Поддержка языка
Поддержка типа (базовые типы, RTTI, свойства типов)    
Макросы тестирования функциональности библиотеки (C++20)
Управление динамической памятью
Программные утилиты
Обработка ошибок
Поддержка сопрограмм (C++20)
Вариативные функции
(C++17)
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Операторы отношения (устарело в 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++17)

Элементарные преобразования строк
(C++17)
(C++17)

Stacktrace
 
Динамическое управление памятью
Умные указатели
(C++11)
(C++11)
(C++11)
(до C++17)
(C++11)
(C++23)
Аллокаторы
Ресурсы памяти
Неинициализированное хранилище
Алгоритмы неинициализированной памяти
Ограниченные алгоритмы неинициализированной памяти
Поддержка сборки мусора
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)
Разное
(C++20)
(C++11)
(C++11)
 

Содержание

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

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

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

[править] Ресурсы памяти

Ресурсы памяти реализуют стратегии выделения памяти, которые может использовать 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
определяют некоторую операцию над итераторами, ограничителями и диапазонами, которые не бросают исключение
(концепт только для экспозиции)
копирует диапазон объектов в неинициализированную область памяти
(ниблоид) [править]
копирует ряд объектов в неинициализированную область памяти
(ниблоид) [править]
копирует объект в неинициализированную область памяти, определяемую диапазоном
(ниблоид) [править]
копирует объект в неинициализированную область памяти, определяемую началом и количеством
(ниблоид) [править]
перемещает диапазон объектов в неинициализированную область памяти
(ниблоид) [править]
перемещает ряд объектов в неинициализированную область памяти
(ниблоид) [править]
создаёт объекты инициализацией по умолчанию в неинициализированной области памяти, определяемой диапазоном
(ниблоид) [править]
создаёт объекты инициализацией по умолчанию в неинициализированной области памяти, определяемой началом и количеством
(ниблоид) [править]
создаёт объекты инициализацией значением в неинициализированной области памяти, определяемой диапазоном
(ниблоид) [править]
создаёт объекты инициализированные значением в неинициализированной области памяти, определяемой началом и количеством
(ниблоид) [править]
уничтожает объект по заданному адресу
(ниблоид) [править]
уничтожает диапазон объектов
(ниблоид) [править]
уничтожает несколько объектов в диапазоне
(ниблоид) [править]
создаёт объект по заданному адресу
(ниблоид) [править]

[править] Поддержка сборщика мусора

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

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

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

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

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

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

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

X Tutup