std::experimental::pmr::monotonic_buffer_resource:: do_allocate
|
virtual
void
*
do_allocate
(
std::
size_t
bytes,
std::
size_t
alignment
)
;
|
(техническая спецификация библиотечных основ) | |
Выделяет память.
Если текущий буфер имеет достаточно неиспользуемого пространства для размещения блока с указанным размером и выравниванием, выделяет возвращаемый блок из текущего буфера.
В противном случае, эта функция выделяет новый буфер, вызывая
upstream_resource()->allocate(n, m)
, где
n
не меньше большего из
bytes
и
следующего размера буфера
, а
m
не меньше
alignment
. Она устанавливает новый буфер как
текущий буфер
, увеличивает
следующий размер буфера
на определяемый реализацией коэффициент роста (который не обязательно является целым числом), и затем выделяет возвращаемый блок из нового буфера.
Возвращаемое значение
Указатель на выделенную область памяти размером не менее bytes байт, выровненную по указанному alignment если такое выравнивание поддерживается, иначе по alignof ( std:: max_align_t ) .
Исключения
Ничего не выбрасывает, если только вызов
allocate()
на вышестоящем ресурсе памяти не выбрасывает исключение.
Смотрите также
|
выделяет память
(публичная функция-член
std::experimental::pmr::memory_resource
)
|
|
|
[virtual]
|
выделяет память
(виртуальная защищённая функция-член
std::experimental::pmr::memory_resource
)
|