Поскольку вопрос был задан, C11 стандартизировала новую функцию:
void *aligned_alloc(size_t alignment, size_t size);
, и она доступна в glibc (насколько мне известно, не в Windows).Он принимает аргументы в том же порядке, что и memalign
, в отличие от _aligned_malloc
от Microsoft, и использует ту же функцию free
, что и для освобождения.
Тонкое отличие состоит в том, что aligned_alloc
требует size
, кратное alignment
.