aligned_alloc - Linux


Overview

aligned_alloc allocates a block of memory of a specified size that is aligned on a specified boundary. It is useful for situations where data structures require specific alignment for optimal performance.

Syntax

void *aligned_alloc(size_t alignment, size_t size);

Options/Flags

None

Examples

  • Align a memory block to 32 bytes:

    void *ptr = aligned_alloc(32, sizeof(int) * 10);
    
  • Allocate a 16-byte aligned buffer for a cache-optimized data structure:

    struct my_data_struct *data = aligned_alloc(16, sizeof(struct my_data_struct));
    

Common Issues

  • Invalid alignment: Passing an invalid alignment value (not a power of 2) or an alignment greater than the system page size may result in undefined behavior.
  • Failed allocation: If the system cannot allocate memory with the specified alignment, aligned_alloc returns NULL.

Integration

aligned_alloc can be used in conjunction with other memory management functions like free:

void *ptr = aligned_alloc(32, sizeof(int) * 10);
...
free(ptr);

Related Commands

  • malloc, realloc: General-purpose memory allocation functions.
  • memalign: Allocates memory with alignment specified in bytes.
  • valloc: Allocates memory aligned to the page size.