void * aligned_malloc(int size, int alignment)
{
void *ptr = malloc(size + alignment + 4);
void *ptr2 = (unsigned char*)ptr + 4;
if(ptr)
{
void *aligned = (unsigned char*)ptr2 + (alignment - (unsigned long)(ptr2) % alignment);
((void **)aligned)[-1] = ptr;
memset(aligned, 0, size);
return aligned;
}
else
return NULL;
}
void aligned_free(void *aligned)
{
void *ptr = ((void **)aligned)[-1];
free(ptr);
}
按某字节对齐分配内存
最新推荐文章于 2022-03-18 22:26:35 发布