存在幾種排列版本古老的malloc()
的,例如:真的沒有realloc()支持對齊的版本嗎?
#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?
是的。沒有很多原因。一個是,已分配的已分配函數不保存有關已分配塊的數據大小的信息,也不可能有任何數據副本。這留給應用程序開發人員。有很多原因,在很多年前非常積極地討論 - 請看適當的郵件列表存檔以獲得詳細信息 –
@PeterJ:您是否認爲對齊的分配函數比'malloc()'保存的_less_信息更節省?我非常懷疑它...無論如何,如果你可以充實一些,最好有一些討論的鏈接,請發表一個答案。 – einpoklum
不少於。論壇的主題太複雜了。瀏覽郵件列表存檔以獲取解釋。 –