NAME
posix_memalign,
aligned_alloc —
aligned memory allocation
LIBRARY
Standard C Library (libc, -lc)
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
The
posix_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 and
size must be a integer multiple of
alignment.
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
free(3),
malloc(3),
realloc(3),
valloc(3)
STANDARDS
The
posix_memalign() function conforms to
IEEE Std 1003.1-2001 (“POSIX.1”). The
aligned_alloc() function conforms to
ISO/IEC 9899:2011 (“ISO C11”).