![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Header <boost/pool/pool_alloc.hpp>Boost , Boost.Pool , Boost.Pool C++ Reference
|
Выражение | Тип возврата | Семантическая эквивалентность | |
PoolAlloc::allocate() | T* | PoolAlloc::allocate(1)<1 | |
PoolAlloc::deallocate(p) | пустой | PoolAlloc::deallocate(p, 1) |
User_allocator публикует значение параметра шаблона UserAllocator.
Примечания
Если функции распределения исчерпают память, они бросят std::bad_alloc
.
Базовый тип пула, используемый распределителями, доступен через интерфейс пула Синглтона. Идентифицирующим тегом, используемым для pool_allocator, является pool_allocator_tag, а тегом, используемым для fast_pool_allocator, является fast_pool_allocator_tag. Все шаблонные параметры распределителей (включая специфичные для реализации) определяют тип базового пула, за исключением первого параметра T, размер которого используется вместо него.
Поскольку размер T используется для определения типа базового пула, каждый распределитель для разных типов одного и того же размера будет иметь один и тот же базовый пул. Класс тегов предотвращает совместное использование пулов между pool_allocator и fast_pool_allocator. Например, в системе, где sizeof(int) == sizeof(void*)
, pool_allocator
и pool_allocator
будут выделять/распределять из/в один и тот же пул.
Если перед началом основного() и после окончания основного() ходит только одна нить, то оба распределителя полностью безвредны.
Компилятор и примечания STL
Ряд распространенных библиотек STL содержат ошибки в использовании распределителей. В частности, они передают нулевые указатели на функцию распределения, которая явно запрещена стандартом [20.1.5 Таблица 32]. PoolAlloc будет работать с этими библиотеками, если обнаружит их; в настоящее время существуют обходные пути для: Borland C++ (Строитель и компилятор командной строки) с библиотекой по умолчанию (RogueWave), ver. 5 и более ранний, STLport (с любым компилятором), ver. 4.0 и более ранний.
namespace boost { struct pool_allocator_tag; template<typename UserAllocator, typename Mutex, unsigned NextSize, unsigned MaxSize> class pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>; struct fast_pool_allocator_tag; template<typename UserAllocator, typename Mutex, unsigned NextSize, unsigned MaxSize> class fast_pool_allocator<void, UserAllocator, Mutex, NextSize, MaxSize>; }
Статья Header <boost/pool/pool_alloc.hpp> раздела Boost.Pool Boost.Pool C++ Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Boost.Pool C++ Reference ::
реклама |