posix_memalign(3) Library Functions Manual posix_memalign(3)

posix_memalign - allocate aligned memory

Standard C library (libc-lc)

#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

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.

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.

The alignment argument was not a power of two, or was not a multiple of sizeof(void *).
Out of memory.

For an explanation of the terms used in this section, see attributes(7).

Interface Attribute Value
posix_memalign () Thread safety MT-Safe

POSIX.1-2024.

glibc 2.1.91. POSIX.1d, POSIX.1-2001.

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.

aligned_alloc(3)

2026-02-08 Linux man-pages 6.17