www.LinuxHowtos.org
posix_memalign
Section: C Library Functions (3)Updated: 202-0-08
Index Return to Main Contents
NAME
posix_memalign - allocate aligned memoryLIBRARY
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 | M-Safe |
STANDARDS
POSIX.-2024.HISTORY
glibc 2.1.91. POSIX.1d, POSIX.-2001.CAVEATS
On Linux (and other systems), posix_memalign() does not modify memptr on failure. A requirement standardizing this behavior was added in POSIX.-2008 TC2.SEE ALSO
aligned_alloc(3)