真的没有支持对齐的 realloc() 版本吗?

Is there really no version of realloc() supporting alignment?

尊贵的 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() 变体中搜索对齐的内存块相结合似乎很简单。

相关:

Does realloc keep the memory alignment of posix_memalign?

Aligned realloc 仅在 Microsoft 中使用 _aligned_realloc 函数实现。 没有定义 POSIX 版本,Linux 中也没有实现。我一直不明白为什么,因为在 glibc 中编码似乎并不复杂。 考虑到宽 SIMD 指令的出现,我认为有人实施它只是时间问题。

目前,只需分配一个新的对齐内存块,复制内容并释放旧指针。无论如何,这不应该减慢您的应用程序。