=pod

=head1 NAME

BUF_MEM_new, BUF_MEM_new_ex, BUF_MEM_free, BUF_MEM_grow - simple
character array structure

standard C library equivalents

=head1 SYNOPSIS

 #include <openssl/buffer.h>

 BUF_MEM *BUF_MEM_new(void);

 #define BUF_MEM_FLAG_SECURE

 BUF_MEM *BUF_MEM_new_ex(unsigned long flags);

 void	BUF_MEM_free(BUF_MEM *a);

 int	BUF_MEM_grow(BUF_MEM *str, int len);

=head1 DESCRIPTION

The buffer library handles simple character arrays. Buffers are used for
various purposes in the library, most notably memory BIOs.

BUF_MEM_new() allocates a new buffer of zero size.

BUF_MEM_new_ex() allocates a buffer with the specified flags.
The flag B<BUF_MEM_FLAG_SECURE> specifies that the B<data> pointer
should be allocated on the secure heap; see L<CRYPTO_secure_malloc(3)>.

BUF_MEM_free() frees up an already existing buffer. The data is zeroed
before freeing up in case the buffer contains sensitive data.

BUF_MEM_grow() changes the size of an already existing buffer to
B<len>. Any data already in the buffer is preserved if it increases in
size.

=head1 RETURN VALUES

BUF_MEM_new() returns the buffer or NULL on error.

BUF_MEM_free() has no return value.

BUF_MEM_grow() returns zero on error or the new size (i.e. B<len>).

=head1 SEE ALSO

L<bio(3)>,
L<CRYPTO_secure_malloc(3)>.

=head1 HISTORY

BUF_MEM_new_ex() was added in OpenSSL 1.1.0.

=cut
