Spec-Zone.ru › C++

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

См. также

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/cpp/memory/monotonic_buffer_resource/do_allocate

Spec-Zone.ru

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