Skip to content

Latest commit

 

History

History
36 lines (28 loc) · 799 Bytes

内存分配.md

File metadata and controls

36 lines (28 loc) · 799 Bytes

相关代码在src/allocator.h里面

#ifndef EASYNN_ALLOCATOR_H
#define EASYNN_ALLOCATOR_H

#include <stdlib.h>

#define EASYNN_MALLOC_ALIGN 64
#define EASYNN_MALLOC_OVERREAD 64

static  size_t alignSize(size_t sz, int n)
{
    return (sz + n - 1) & -n;
}

static void* fastMalloc(size_t size)
{   
    void * ptr = 0;
    if (posix_memalign(&ptr, EASYNN_MALLOC_ALIGN, size + EASYNN_MALLOC_OVERREAD))
        ptr = 0;
    return ptr;
}

static  void fastFree(void* ptr)
{
    if (ptr)
    {
        free(ptr);
    }
}

#endif

fastMalloc实际上时封装posix_memalign返回对齐64字节内存的地址,同时会额外对分配EASYNN_MALLOC_OVERREAD,也就是64个字节。alignSize是一的功能是将给定的size_t类型的sz值对齐到最近的n的倍数。