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

std::pmr::synchronized_pool_resource

Материал из cppreference.com
< cpp‎ | memory
 
 
Динамическое управление памятью
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_resource>
class synchronized_pool_resource : public std::pmr::memory_resource;
(начиная с C++17)

Класс std::pmr::synchronized_pool_resource это класс ресурсов памяти общего назначения со следующими свойствами:

  • Он владеет выделенной памятью и освобождает её при уничтожении, даже если deallocate не вызывался для некоторых выделенных блоков.
  • Он состоит из набора пулов, которые обслуживают запросы на блоки разного размера. Каждый пул управляет набором фрагментов, которые затем делятся на блоки одинакового размера.
  • Вызовы do_allocate направляются в пул, обслуживающий наименьшие блоки, соответствующие запрошенному размеру.
  • Исчерпание памяти в пуле приводит к тому, что следующий запрос на выделение для этого пула выделяет дополнительный фрагмент памяти для пополнения пула из вышестоящего аллокатора. Полученный размер фрагмента увеличивается в геометрической прогрессии.
  • Запросы на выделение, которые превышают максимальный размер блока, обслуживаются напрямую вышестоящим аллокатором.
  • Максимальный размер блока и максимальный размер фрагмента можно настроить, передав структуру std::pmr::pool_options в его конструктор.

synchronized_pool_resource может быть доступен из нескольких потоков без внешней синхронизации и может иметь пулы для конкретных потоков для снижения затрат на синхронизацию. Если доступ к ресурсу памяти осуществляется только из одного потока, unsynchronized_pool_resource более эффективен.

[править] Функции-элементы

создаёт synchronized_pool_resource
(public функция-элемент) [править]
уничтожает synchronized_pool_resource, освобождая всю выделенную память
(virtual public функция-элемент) [править]
operator=
[удалено]
оператор присваивания копированием удалён. synchronized_pool_resource нельзя присвоить копированием
(public функция-элемент) [править]
Открытые функции-элементы
освобождает всю выделенную память
(public функция-элемент) [править]
возвращает указатель на вышестоящий ресурс памяти
(public функция-элемент) [править]
возвращает параметры, управляющие поведением пула этого ресурса
(public функция-элемент) [править]
Защищённые функции-элементы
[virtual]
выделяет память
(virtual protected функция-элемент) [править]
возвращает память в пул
(virtual protected функция-элемент) [править]
[virtual]
сравнивает на равенство с другим memory_resource
(virtual protected функция-элемент) [править]