20
Memory management library
[mem]
20.4
Memory resources
[mem.res]
20.4.6
Class
monotonic_
buffer_
resource
[mem.res.monotonic.buffer]
20.4.6.1
General
[mem.res.monotonic.buffer.general]
1
#
A
monotonic_
buffer_
resource
is a special-purpose memory resource intended for very fast memory allocations in situations where memory is used to build up a few objects and then is released all at once when the memory resource object is destroyed
.
🔗
namespace
std
::
pmr
{
class
monotonic_buffer_resource
:
public
memory_resource
{
memory_resource
*
upstream_rsrc;
//
exposition only
void
*
current_buffer;
//
exposition only
size_t next_buffer_size;
//
exposition only
public
:
explicit
monotonic_buffer_resource
(
memory_resource
*
upstream
)
; monotonic_buffer_resource
(
size_t initial_size, memory_resource
*
upstream
)
; monotonic_buffer_resource
(
void
*
buffer, size_t buffer_size, memory_resource
*
upstream
)
; monotonic_buffer_resource
(
)
:
monotonic_buffer_resource
(
get_default_resource
(
)
)
{
}
explicit
monotonic_buffer_resource
(
size_t initial_size
)
:
monotonic_buffer_resource
(
initial_size, get_default_resource
(
)
)
{
}
monotonic_buffer_resource
(
void
*
buffer, size_t buffer_size
)
:
monotonic_buffer_resource
(
buffer, buffer_size, get_default_resource
(
)
)
{
}
monotonic_buffer_resource
(
const
monotonic_buffer_resource
&
)
=
delete
;
virtual
~
monotonic_buffer_resource
(
)
; monotonic_buffer_resource
&
operator
=
(
const
monotonic_buffer_resource
&
)
=
delete
;
void
release
(
)
; memory_resource
*
upstream_resource
(
)
const
;
protected
:
void
*
do_allocate
(
size_t bytes, size_t alignment
)
override
;
void
do_deallocate
(
void
*
p, size_t bytes, size_t alignment
)
override
;
bool
do_is_equal
(
const
memory_resource
&
other
)
const
noexcept
override
;
}
;
}