真的没有支持对齐的 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 指令的出现,我认为有人实施它只是时间问题。
目前,只需分配一个新的对齐内存块,复制内容并释放旧指针。无论如何,这不应该减慢您的应用程序。
尊贵的 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 指令的出现,我认为有人实施它只是时间问题。
目前,只需分配一个新的对齐内存块,复制内容并释放旧指针。无论如何,这不应该减慢您的应用程序。