ALIGNED_ALLOC(3)

NAME
aligned_alloc, posix_memalign - aligned memory allocation

LIBRARY
libc

SYNOPSIS
#include <stdlib.h>
void *
aligned_alloc(size_t alignment, size_t size);
int
posix_memalign(void **ptr, size_t alignment, size_t size);

DESCRIPTION
The aligned_alloc() and posix_memalign() functions allocate size bytes of memory such that the allocation's base address is an even multiple of alignment. The aligned_alloc() function returns the allocation, while the posix_memalign() function stores 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 *).

Memory that is allocated via aligned_alloc() and posix_memalign() can be used as an argument in subsequent calls to realloc(3), reallocf(3), and free(3).

RETURN VALUES
The aligned_alloc() function returns a pointer to the allocation if successful; otherwise a NULL pointer is returned and errno is set to an error value.

The posix_memalign() function returns the value 0 if successful; otherwise it returns an error value.

ERRORS
The aligned_alloc() and posix_memalign() functions will fail if:

[EINVAL]
    The alignment parameter is not a power of 2 at least as large as sizeof(void *).

[ENOMEM]
    Memory allocation error.

SEE ALSO
free(3), malloc(3), realloc(3), reallocf(3), valloc(3)

STANDARDS
The aligned_alloc() function conforms to isoC-2011.

The posix_memalign() function conforms to p1003.1-2001.

HISTORY
The posix_memalign() function first appeared in FreeBSD 7.0.

The aligned_alloc() function first appeared in FreeBSD 10.0.