std::pmr::m...do_allocate(3)
π NAME π
std::pmr::monotonic_buffer_resource::do_allocate β bestie, it's literally std::pmr::monotonic_buffer_resource::do_allocate, the one and only. We're in the C++ Standard Libary manual, section 3, page std::pmr::m...do_allocate(3). Yes, βLibaryβ is spelled like that in the header, and we respect the headerβs main-character energy. β¨
π Synopsis π
virtual void* do_allocate( std::size_t bytes, std::size_t alignment
(since C++17)
);
The vibe: it allocates storage. π
If the current buffer has sufficient unused space to fit a block with the specified size and alignment, it allocates the return block from the current buffer. Easy peasy. π
Otherwise, this function allocates a new buffer by calling upstream_resource()->allocate(n, m), where n is not less than the greater of bytes and the next buffer size, and m is not less than alignment. It sets the new buffer as the current buffer, increases the next buffer size by an implementation-defined growth factor (which is not necessarily integral), and then allocates the return block from the newly allocated buffer. Iconic behavior, no cap. π¦
π Return value π
A pointer to allocated storage of at least bytes bytes in size, aligned to the specified alignment if such alignment is supported, and to alignof(std::max_align_t) otherwise. Slay. π
π Exceptions π
Throws nothing unless calling allocate() on the upstream memory resource throws. That's the whole tea. π
π See also π
allocateβ allocates memory (public member function ofstd::pmr::memory_resource).do_allocateβ allocates memory[virtual](virtual private member function ofstd::pmr::memory_resource).
Source check: this came from http://cppreference.com, stamped 2024.06.10, with footer std::pmr::m...do_allocate(3). Byeee, go allocate something iconic π«Άπ
π¦ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms