NAME
posix_memalign
,
aligned_alloc
—
aligned memory allocation
LIBRARY
library “libc”
SYNOPSIS
#include
<stdlib.h>
int
posix_memalign
(void
**ptr, size_t
alignment, size_t
size);
void *
aligned_alloc
(size_t
alignment, size_t
size);
DESCRIPTION
Theposix_memalign
()
function allocates size bytes of memory such that the
allocation's base address is an even multiple of
alignment, and returns the allocation in the value
pointed to by ptr. The requested
alignment must be a power of 2 at least as large as
sizeof
(void
*).
The
aligned_alloc
()
function allocates size bytes of memory such that the
allocation's base address is an even multiple of
alignment. The requested
alignment must be a power of 2.
Memory that is allocated via
posix_memalign
()
or aligned_alloc
() can be used as an argument in
subsequent calls to
realloc(3) and
free(3).
RETURN VALUES
The posix_memalign
() function returns the
value 0 if successful; otherwise it returns an error value.
The aligned_alloc
() function returns a
pointer to the allocated memory if successful; on failure it returns
NULL
and sets errno to
indicate the error.
ERRORS
The posix_memalign
() and
aligned_alloc
() functions will fail if:
- [
EINVAL
] - The alignment parameter is not a power of 2.
- [
ENOMEM
] - Memory allocation error.
The posix_memalign
() function will also
fail if
- [
EINVAL
] - The alignment parameter is not at least as large as
sizeof
(void *).
The aligned_alloc
() function will also
fail if
- [
EINVAL
] - The size parameter is not an integer multiple of alignment.
SEE ALSO
STANDARDS
The posix_memalign
() function conforms to
IEEE Std 1003.1-2001 (“POSIX.1”). The
aligned_alloc
() function conforms to.
HISTORY
ISO/IEC 9899:2011 (“ISO C11”) required size to be an integer multiple of alignment. This requirement was removed in later standards.