90 void *
ptr = malloc(
size + alignment +
sizeof(MemHead));
91 void *used_ptr =
reinterpret_cast<void *
>(
92 uintptr_t(
POINTER_OFFSET(
ptr, alignment +
sizeof(MemHead))) & ~(uintptr_t(alignment) - 1));
93 int offset = int(intptr_t(used_ptr) - intptr_t(
ptr));
95 (
static_cast<MemHead *
>(used_ptr) - 1)->offset = offset;
101 MemHead *head =
static_cast<MemHead *
>(
ptr) - 1;
102 int offset = -head->offset;
104 free(actual_pointer);
void BLI_kdtree_nd_ free(KDTree *tree)
#define POINTER_OFFSET(v, ofs)
Read Guarded memory(de)allocation.
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
void deallocate(void *ptr)
static constexpr size_t min_alignment
void * allocate(size_t size, size_t alignment, const char *name)
void * allocate(size_t size, size_t alignment, const char *name)
void deallocate(void *ptr)
void deallocate(void *ptr)
void * allocate(size_t size, size_t alignment, const char *)
void * MEM_mallocN_aligned(size_t len, size_t alignment, const char *str)
void MEM_freeN(void *vmemh)