aligned memory allocation

来源:互联网 发布:礼品定制 知乎 编辑:程序博客网 时间:2024/05/21 21:36
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)));}

0 0