POSIX_MEMALIGN(3) | Library Functions Manual | POSIX_MEMALIGN(3)

# NAME

`posix_memalign` — aligned memory allocation

# SYNOPSIS

`#include <stdlib.h>`

int
`posix_memalign`(void **ptr, size_t alignment, size_t size);

# DESCRIPTION

The `posix_memalign`() function allocates size bytes of memory such that the allocation's base address is a 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 *).

Memory that is allocated via `posix_memalign`() can be used as an argument in subsequent calls to realloc(3), reallocarray(3) and free(3), but not recallocarray(3) and freezero(3).

# RETURN VALUES

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

# ERRORS

The `posix_memalign`() function 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)

# STANDARDS

The `posix_memalign`() function conforms to IEEE Std 1003.1-2001 (“POSIX.1”).

# HISTORY

The `posix_memalign`() function first appeared in OpenBSD 4.8.

May 13, 2017 | Debian