内存16位对齐分配

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)) );

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值