c memory-management alignment malloc realloc

¿Realmente no hay versión de realloc() que soporte alineación?



realloc c++ (1)

Aligned realloc solo se implementa en Microsoft con la función _aligned_realloc . No hay una versión POSIX definida y ninguna implementación en Linux. Sin embargo, nunca entendí por qué, porque no parece tan complicado codificar en glibc . Creo que es cuestión de tiempo antes de que alguien lo implemente, considerando el advenimiento de las amplias instrucciones SIMD.

En este momento, simplemente asigne un nuevo bloque de memoria alineada, copie el contenido y libere el puntero antiguo. Esto no debería ralentizar su aplicación de todos modos.

Existen varias versiones alineadas del venerable malloc() , por ejemplo:

#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);

(originados en POSIX, glibc y Linux libc respectivamente). Pero, no puedo encontrar ninguna mención de una versión de realloc() que admita la alineación. ¿Realmente nunca se ha implementado? Parece bastante trivial combinar la funcionalidad de realloc() no alineado realloc() con la búsqueda de un fragmento de memoria alineado en las variantes de malloc() alineadas.

Relacionado:

¿Realloc mantiene la alineación de memoria de posix_memalign?