Namespaces
Variants

std::pmr::monotonic_buffer_resource:: do_allocate

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
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 )