0
我學習Redis的源代碼,並在zmalloc.c,Redis的源代碼,(大小及(的sizeof(長)-1))在zmalloc.c
size_t zmalloc_size(void *ptr) {
void *realptr = (char*)ptr-PREFIX_SIZE;
size_t size = *((size_t*)realptr);
/* Assume at least that all the allocations are padded at sizeof(long) by
* the underlying allocator. */
if (size&(sizeof(long)-1)) size += sizeof(long)-(size&(sizeof(long)-1));
return size+PREFIX_SIZE;
}
我感到困惑與
if (size&(sizeof(long)-1)) size += sizeof(long)-(size&(sizeof(long)-1));
它有什麼作用呢?內存填充?那麼爲什麼sizeof(長)?