Boost.Pool: различия между версиями
Содержимое удалено Содержимое добавлено
Miere43 (обсуждение | вклад) Нет описания правки |
DannyS712 (обсуждение | вклад) м <source> -> <syntaxhighlight> (phab:T237267) |
||
Строка 70:
Существует два UserAllocator класса. Оба находятся в pool.hpp. <br />
По умолчанию, параметром шаблона UserAllocator всегда является default_user_allocator_new_delete. <br />
<
struct default_user_allocator_new_delete
{
Строка 134:
}
} // при завершении функции, p уничтожается, и вся выделенная под int память неявно освобождается.
</syntaxhighlight>
==== Object_pool ====
Строка 142:
'''''Синопсис''''' <br />
<
class object_pool
{
Строка 165:
// other construct() functions
void destroy(element_type * p);
};</
Параметры шаблона: <br />
'''''ElementType'''''<br />
Строка 171:
'''''UserAllocator'''''<br />
Определяет метод, используемый Pool для выделения системной памяти. По умолчанию это default_user_allocator_new_delete. <br />Подробнее смотрите __UserAllocator .<br />
Пример: <
void func()
{
Строка 180:
... // Делаем что-либо с t; не тратим время на вызов free().
}
} при завершении функции, p уничтожается, и вся выделенная под Х объекты память неявно освобождается..</
==== Singleton_pool ====
Интерфейс singleton_pool в singleton_pool.hpp построен с применением Singleton и возвращает NULL при нехватке памяти. Идентичен интерфейсу pool за исключением того, что использует Singleton вместо Object. <br />
'''''Синопсис'''''
<
typename UserAllocator = default_user_allocator_new_delete>
struct singleton_pool
Строка 216:
static bool release_memory();
static bool purge_memory();
};</
Примечание <br />
Внутренний pool p используемый статическими функциями в singleton_pool в действительности объявлен другим способом, поэтому:
Строка 234:
Пример: <br />
<
struct MyPoolTag { };
typedef boost::singleton_pool<MyPoolTag, sizeof(int)> my_pool;
Строка 247:
my_pool::purge_memory();
}
</syntaxhighlight>
==== pool_allocator ====
Строка 259:
'''''Синопсис'''''
<
struct pool_allocator_tag { };
template <typename T,
Строка 346:
static pointer allocate();
static void deallocate(pointer ptr);
};</
'''''Параметры шаблона'''''
Строка 353:
''UserAllocator'' определяет метод, используемый внутренней реализацией для выделения памяти из системы. Подробнее смотрите User Allocators.<br />
Пример:<br />
<
void func()
{
Строка 364:
// boost::singleton_pool<boost::pool_allocator_tag, sizeof(int)>::release_memory();
// чтобы принудительно освободить системную память
</syntaxhighlight>
== Подробнее о Pool ==
|