gpt4 book ai didi

c - 如何在 C 中分配和释放对齐内存

转载 作者:太空狗 更新时间:2023-10-29 16:25:48 29 4
gpt4 key购买 nike

如何分配与 C 中的特定边界对齐的内存(例如,缓存行边界)?我正在寻找 malloc/free 之类的实现,理想情况下它们将尽可能可移植 --- 至少在 32 位和 64 位架构之间。

编辑添加:换句话说,我正在寻找行为类似于(现在过时?)memalign 的东西。函数,可以使用 free 释放。

最佳答案

这里有一个解决方案,它封装了对 malloc 的调用,分配一个更大的缓冲区用于对齐目的,并将原始分配的地址存储在对齐缓冲区之前,以供以后调用 free。

// cache line
#define ALIGN 64

void *aligned_malloc(int size) {
void *mem = malloc(size+ALIGN+sizeof(void*));
void **ptr = (void**)((uintptr_t)(mem+ALIGN+sizeof(void*)) & ~(ALIGN-1));
ptr[-1] = mem;
return ptr;
}

void aligned_free(void *ptr) {
free(((void**)ptr)[-1]);
}

关于c - 如何在 C 中分配和释放对齐内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1919183/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com