std::pmr::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) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/memory/monotonic_buffer_resource/do_allocate