Существует несколько выровненных версий почтенного malloc(), например:
#include <stdlib.h>
int posix_memalign(void **memptr, size_t alignment, size_t size);
void *aligned_alloc(size_t alignment, size_t size);
#include <malloc.h>
void *memalign(size_t alignment, size_t size);
(происходит из POSIX, glibc и Linux libc соответственно). Но... я не могу найти упоминания о версии realloc(), которая поддерживает выравнивание. Неужели это никогда не было реализовано? Кажется довольно тривиальным объединить функциональность не выровненного realloc() с поиском выровненного фрагмента памяти в выровненных вариантах malloc().
по теме: