Spec-Zone.ru › C++

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() на ресурсе памяти выше по потоку не выбрасывается исключение.

См. также

allocate
выделяет память
(публичный член-функция std::pmr::memory_resource)
do_allocate
[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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API