Namespaces
Variants

std::experimental::pmr::monotonic_buffer_resource:: do_allocate

From cppreference.net
virtual void * do_allocate ( std:: size_t bytes, std:: size_t alignment ) ;
(техническая спецификация библиотечных основ)

Выделяет память.

Если текущий буфер имеет достаточно неиспользуемого пространства для размещения блока с указанным размером и выравниванием, выделяет возвращаемый блок из текущего буфера.

В противном случае, эта функция выделяет новый буфер, вызывая upstream_resource()->allocate(n, m) , где n не меньше большего из bytes и следующего размера буфера , а m не меньше alignment . Она устанавливает новый буфер как текущий буфер , увеличивает следующий размер буфера на определяемый реализацией коэффициент роста (который не обязательно является целым числом), и затем выделяет возвращаемый блок из нового буфера.

Возвращаемое значение

Указатель на выделенную область памяти размером не менее bytes байт, выровненную по указанному alignment если такое выравнивание поддерживается, иначе по alignof ( std:: max_align_t ) .

Исключения

Ничего не выбрасывает, если только вызов allocate() на вышестоящем ресурсе памяти не выбрасывает исключение.

Смотрите также

выделяет память
(публичная функция-член std::experimental::pmr::memory_resource )
[virtual]
выделяет память
(виртуальная защищённая функция-член std::experimental::pmr::memory_resource )