内存16位对齐分配

来源:互联网 发布:手机域名注册有什么用 编辑:程序博客网 时间:2024/06/06 01:40
void* MallocAlign16(size_t size)
{
    int ptrSize = sizeof(void*);


    byte* ptr =(byte*) malloc(size + 16 + ptrSize);
    byte* alignedPtr = (byte*) ( ((size_t) ptr) + 15 & ~15);
    if( (alignedPtr - ptr) < ptrSize)
    {
        alignedPtr += 16;
    }


    *((size_t*) (alignedPtr - ptrSize)) = (size_t) ptr;
    return (void*) alignedPtr;
}


void FreeAlign16(void* ptr)
{
    int ptrSize = sizeof(void*);
    free( (void *) *((size_t *) (( (byte *) ptr ) - ptrSize)) );

}



原创粉丝点击