[#BloombergLP-bdlma-BufferedSequentialAllocator-2constructor-06a]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bdlma.adoc[bdlma]::xref:BloombergLP/bdlma/BufferedSequentialAllocator.adoc[BufferedSequentialAllocator]::BufferedSequentialAllocator
:relfileprefix: ../../../
:mrdocs:

Create a buffered sequential allocator with growth limited to `maxBufferSize`&period;

== Synopsis

Declared in `&lt;bdlma&lowbar;bufferedsequentialallocator&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
BufferedSequentialAllocator(
    char* buffer,
    xref:BloombergLP/bsls/Types/size_type.adoc[bsls::Types::size&lowbar;type] size,
    xref:BloombergLP/bsls/Types/size_type.adoc[bsls::Types::size&lowbar;type] maxBufferSize,
    xref:BloombergLP/bslma/Allocator.adoc[bslma::Allocator]* basicAllocator = 0);
----

== Description

Create a buffered sequential allocator for allocating memory blocks from the specified external `buffer` having the specified `size` (in bytes), or from an internal buffer (after the external `buffer` is exhausted) where the buffer growth is limited to the specified `maxBufferSize` (in bytes)&period; Optionally specify a `growthStrategy` used to control buffer growth&period; If a `growthStrategy` is not specified, geometric growth is used&period; Optionally specify an `alignmentStrategy` used to align allocated memory blocks&period; If an `alignmentStrategy` is not specified, natural alignment is used&period; Optionally specify a `basicAllocator` used to supply memory should the capacity of `buffer` be exhausted&period; If `basicAllocator` is 0, the currently installed default allocator is used&period; The behavior is undefined unless `0 &lt; size`, `size &lt;&equals; maxBufferSize`, and `buffer` has at least `size` bytes&period; Note that, due to alignment effects, it is possible that not all `size` bytes of memory in `buffer` can be used for allocation&period; Also note that when constant growth is used, the size of the internal buffers will always be the same as `size`&period;

== Parameters

[cols="1,4"]
|===
| Name| Description
| *buffer*
| external buffer from which to allocate
| *size*
| size in bytes of `buffer`
| *maxBufferSize*
| maximum dynamically allocated buffer size in bytes
| *basicAllocator*
| memory allocator&semi; null uses the default
|===


[.small]#Created with https://www.mrdocs.com[MrDocs]#
