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