Аллокатор узла STL, который использует менеджер сегментов в качестве источника памяти. Внутренний тип указателя будет того же типа (сырой, умный), что и тип «типовое имя SegmentManager::void_pointer». Это позволяет разместить распределитель в общей памяти, карт памяти-файлы и т.д. Этот распределитель имеет собственный узел пула.
NodesPerBlock - это минимальное количество узлов узлов, выделенных одновременно, когда у распределителя заканчиваются узлы. MaxFreeBlocks - это максимальное количество полностью свободных блоков, которые будет поддерживать бассейн адаптивных узлов. Остальные свободные блоки будут размещены у менеджера сегмента.
OverheadPercent - максимальный размер накладных расходов (1-20%) распределителя: (память, используемая для узлов / общая память, выделенная из менеджера сегмента)
private_adaptive_pool
public
construct/copy/destruct
Конструктор от менеджера сегмента. Если нет, то строится узел-пул. Увеличивает количество ссылок на соответствующий пул узлов. Можно ли ставить<boost::interprocess::bad_alloc>
Возвращает адрес изменяемого объекта. Никогда не бросайте
<
const_pointeraddress(const_referencevalue)const;
>
Возвращает адрес неизменяемого объекта. Никогда не бросайте
<
voidconstruct(constpointer&ptr,const_referencev);
>
Копии строят объект. Бросает, если копирует конструктор Т
<
voiddestroy(constpointer&ptr);
>
Уничтожает объект. Бросает, если разрушитель объекта бросает
<
size_typesize(constpointer&p)const;
>
Возвращает максимальное количество объектов, которые может удерживать ранее выделенная память, указанная p. Этот размер работает только для памяти, выделенной с выделением, выделением_командой и выделением_многими.
Выделяет множество элементов размера elem_size в смежный блок памяти. Минимальное число, которое должно быть выделено, - это min_элементы, предпочтительное и максимальное число - предпочтительные_элементы. Количество фактически выделенных элементов будет присвоено для receive_size. Элементы должны быть размещены с помощью соглашения (...)
Выделяет элементы n_элементов, каждый из которых размером elem_sizes[i] в смежный блок памяти. Элементы должны быть размещены
<
voiddeallocate_many(multiallocation_chain&chain);
>
Выделяет множество элементов размера elem_size в смежный блок памяти. Минимальное число, которое должно быть выделено, - это min_элементы, предпочтительное и максимальное число - предпочтительные_элементы. Количество фактически выделенных элементов будет присвоено для receive_size. Элементы должны быть размещены с помощью соглашения (...)
<
pointerallocate_one();
>
Выделяют только один объект. Память, выделенная с этой функцией, должна быть размещена только с помощью deallocate_one(). Бросает<boost::interprocess::bad_alloc>, если не хватает памяти
Выделяет множество элементов размера == 1 в смежном блоке памяти. Минимальное число, которое должно быть выделено, - это min_элементы, предпочтительное и максимальное число - предпочтительные_элементы. Количество фактически выделенных элементов будет присвоено для receive_size. Память, выделенная с этой функцией, должна быть размещена только с помощью deallocate_one().
<
voiddeallocate_one(constpointer&p);
>
Выделяет память, ранее выделенную с выделением_one(). Вы никогда не должны использовать deallocate_one для обработки памяти, выделенной с другими функциями, отличными от allocate_one(). Никогда не бросайте
Выделяет множество элементов размера == 1 в смежном блоке памяти. Минимальное число, которое должно быть выделено, - это min_элементы, предпочтительное и максимальное число - предпочтительные_элементы. Количество фактически выделенных элементов будет присвоено для receive_size. Память, выделенная с этой функцией, должна быть размещена только с помощью deallocate_one().
private_adaptive_pool friend functions
<
friendvoidswap(self_t&alloc1,self_t&alloc2);
>
Распределители свопов. Не бросает. Если каждый распределитель помещается в отдельный сегмент памяти, результат не определен.
Статья Class template private_adaptive_pool раздела The Boost C++ Libraries BoostBook Documentation Subset Indexes and Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.