![]() |
![]() |
![]() |
![]() |
posix_memalign()
Allocate aligned memory
Synopsis:
#include <stdlib.h>
int posix_memalign( void ** memptr,
size_t alignment,
size_t size );
Arguments:
- memptr
- A pointer to a location where posix_memalign() can store a pointer the memory.
- alignment
- The alignment to use for the memory. This must be a multiple of size( void * ).
- size
- The size, in bytes, of the block to allocate.
Library:
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
Description:
The posix_memalign() function allocates size bytes aligned on a boundary specified by alignment. It returns a pointer to the allocated memory in memptr.
The buffer allocated by posix_memalign() is contiguous in virtual address space, but not physical memory. Since some platforms don't allocate memory in 4 KB page sizes, you shouldn't assume that the memory allocated will be physically contiguous if you specify a size of 4 KB or less.
You can obtain the physical address of the start of the buffer using mem_offset() with fd=NOFD.
Returns:
- 0
- Success.
- -1
- An error occurred (errno is set).
Errors:
- EINVAL
- The value of alignment isn't a multiple of size( void * ).
- ENOMEM
- There's insufficient memory available with the requested alignment.
Classification:
| Safety: | |
|---|---|
| Cancellation point | No |
| Interrupt handler | No |
| Signal handler | Yes |
| Thread | Yes |
See also:
errno, free(), malloc(), memalign()
![]() |
![]() |
![]() |
![]() |

![[Previous]](../prev.gif)
![[Contents]](../contents.gif)
![[Index]](../keyword_index.gif)
![[Next]](../next.gif)