[#BloombergLP-bslma-BufferAllocator-allocateFromBuffer-03] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslma.adoc[bslma]::xref:BloombergLP/bslma/BufferAllocator.adoc[BufferAllocator]::allocateFromBuffer :relfileprefix: ../../../ :mrdocs: Allocate a memory block of the specified `size` from the specified `buffer` at the specified `cursor` position using the specified `alignment`. Return the address of the allocated memory block if `buffer` contains enough available memory, and `null` otherwise. The `cursor` is set to the index of the next available byte in `buffer` after the allocation. If `size` is 0, do not allocate memory and return zero. The behavior is undefined unless `0 <= bufSize`, `0 <= size`, `0 < alignment <= bsls::AlignmentUtil::BSLS_MAX_ALIGNMENT`, and alignment is an integral power of 2. == Synopsis Declared in `<bslma_bufferallocator.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- static void* allocateFromBuffer( int* cursor, char* buffer, xref:BloombergLP/bslma/Allocator/size_type.adoc[size_type] bufSize, xref:BloombergLP/bslma/Allocator/size_type.adoc[size_type] size, int alignment); ---- [.small]#Created with https://www.mrdocs.com[MrDocs]#