相关代码在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
的倍数。