aligned_alloc
| Defined in header <stdlib.h>
|
||
| (since C11) | ||
Allocate size bytes of uninitialized storage whose alignment is specified by alignment. The size parameter must be an integral multiple of alignment.
aligned_alloc is thread-safe: it behaves as though only accessing the memory locations visible through its argument, and not any static storage.
A previous call to free or realloc that deallocates a region of memory synchronizes-with a call to aligned_alloc that allocates the same or a part of the same region of memory. This synchronization occurs after any access to the memory by the deallocating function and before any access to the memory by aligned_alloc
Contents |
[edit] Parameters
| alignment | - | specifies the alignment. Must be a valid alignment supported by the implementation. |
| size | - | number of bytes to allocate. An integral multiple of alignment
|
[edit] Return value
Either a null pointer or a pointer to the allocated memory. The pointer must be deallocated with free().
[edit] Notes
Passing a size which is not an integral multiple of alignment or a alignment which is not valid or not supported by the implementation is undefined behavior.
E.g., the glibc requires alignment to be a power of two and a multiple of sizeof(void *).
[edit] References
- C11 standard (ISO/IEC 9899:2011):
- 7.22.3.1 Memory management functions
[edit] See also
| C++ documentation for aligned storage
|