aligned malloc free 예제 코드
원하는 단위로 정렬된 메모리를 할당하는 예제 코드이다.
aligned malloc
void * aligned_malloc(size_t size, size_t align)
{
void *ptr = NULL;
void *aligned_ptr = NULL;
if (size == 0 || align & (align-1))
{
return (void*)0;
}
ptr = malloc(size+align);
if (!ptr)
{
return (void*)0;
}
memset(ptr,0,size+align);
aligned_ptr = (void*)(((size_t)ptr+align) &
~(align-1));
((void **)aligned_ptr)[-1] = ptr;
return aligned_ptr;
}
aligned free
void aligned_free(void *aligned_ptr)
{
if (aligned_ptr)
{
free(((void
**)aligned_ptr)[-1]);
}
}
댓글
댓글 쓰기