[#BloombergLP-bslma-SequentialPool-2constructor-04]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslma.adoc[bslma]::xref:BloombergLP/bslma/SequentialPool.adoc[SequentialPool]::SequentialPool
:relfileprefix: ../../../
:mrdocs:

Create a sequential pool using the specified external `buffer` with a maximum buffer size&period;

== Synopsis

Declared in `&lt;bslma&lowbar;sequentialpool&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
SequentialPool(
    char* buffer,
    int bufferSize,
    int maxBufferSize,
    xref:BloombergLP/bslma/Allocator.adoc[Allocator]* basicAllocator = 0);
----

== Description

Create a sequential pool for allocating memory blocks initially from the specified `buffer` the size (in bytes) of which is indicated by the absolute value of the specified `bufferSize`&period; The specified `maxBufferSize` indicates the maximum size (in bytes) allowed for internally allocated buffers&period; Optionally specify an alignment `strategy` used to align allocated memory blocks&period; If `strategy` is not specified, _Natural Alignment_ is used&period; Optionally specify a `basicAllocator` used to supply memory&period; If `basicAllocator` is 0, the currently installed default allocator is used&period; If an `allocate` or `reserveCapacity` request cannot be satisfied from the current buffer, a new buffer is allocated, the size of which is determined by a buffer growth strategy implied by `bufferSize`&period; If `bufferSize` is negative, the buffer growth strategy used is _Geometric Growth_&semi; otherwise it is _Constant Growth_&period; (See the component level documentation for further details&period;) In either case, the new buffer will have sufficient capacity to satisfy the request&period; If _Geometric Growth_ is in effect, the geometric progression of buffer sizes is capped at `maxBufferSize`&period; The behavior is undefined unless `0 &lt; maxBufferSize`, and `&verbar;bufferSize&verbar; &lt;&equals; maxBufferSize`&period; Note that `maxBufferSize` is ignored if `bufferSize &gt; 0`&period; Also note that `maxBufferSize` may be overridden by a sufficiently large value passed to `allocate` or `reserveCapacity`&period;

== Parameters

[cols="1,4"]
|===
| Name| Description
| *buffer*
| The external buffer used for initial allocations&period;
| *bufferSize*
| The size (in bytes) of `buffer`&period;
| *maxBufferSize*
| The maximum internal buffer size (in bytes)&period;
| *basicAllocator*
| The allocator used to supply memory&period;
|===


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