std::pmr::monotonic_buffer_resource::do_allocate
virtual void* do_allocate( std::size_t bytes, std::size_t alignment ); | (since 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) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/memory/monotonic_buffer_resource/do_allocate