NAME
posix_memalign - allocate aligned memory
LIBRARY
Standard C library (libc, -lc)
SYNOPSIS
#include <stdlib.h>
int posix_memalign(void **memptr, size_t alignment, size_t size);
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
posix_memalign():
_POSIX_C_SOURCE >= 200112L
DESCRIPTION
posix_memalign() allocates size bytes and places the address of the allocated memory in *memptr. The address of the allocated memory will be a multiple of alignment, which must be a power of two and a multiple of sizeof(void *). This address can later be successfully passed to free(3). If size is 0, then the value placed in *memptr is either NULL or a unique pointer value.
The memory is not zeroed.
aligned_alloc(3) is a standard function that provides the same functionality, and has a more ergonomic prototype. Use that instead.
RETURN VALUE
posix_memalign() returns zero on success, or one of the error values listed in the next section on failure. The value of errno is not set.
ERRORS
- EINVAL
-
The alignment argument was not a power of two, or was not a multiple of sizeof(void *).
- ENOMEM
-
Out of memory.
ATTRIBUTES
For an explanation of the terms used in this section, see attributes(7).
| Interface | Attribute | Value |
| posix_memalign() | Thread safety | MT-Safe |
STANDARDS
POSIX.1-2024.
HISTORY
glibc 2.1.91. POSIX.1d, POSIX.1-2001.
CAVEATS
On Linux (and other systems), posix_memalign() does not modify memptr on failure. A requirement standardizing this behavior was added in POSIX.1-2008 TC2.