void *aligned_alloc(size_t size, size_t align) {
void *p = NULL;
void *ret = NULL;
p = malloc(size + align + sizeof(void *));
if (!p) return NULL;
size_t offset = align - (size_t)p % align;
if (offset < sizeof (void*)) offset += align;
ret = (p + offset);
*((size_t*)ret - 1) = (size_t)p;
return ret;
}
void aligned_free(void *p) {
free((void *)(*((size_t *)p - 1)));
}aligned memory allocation
最新推荐文章于 2021-03-08 20:35:11 发布
本文介绍了一个用于内存对齐分配的 C 函数 `aligned_alloc` 和对应的释放函数 `aligned_free`。`aligned_alloc` 函数接收所需内存大小与对齐方式作为参数,并返回指向已对齐内存的指针;`aligned_free` 则用于释放由 `aligned_alloc` 分配的内存。
834

被折叠的 条评论
为什么被折叠?



