static void bkfree(fz_memorycontext *mem, void *p) { AllocMapIt it = alloc_allocs.find(p); if (it != alloc_allocs.end()) { alloc_current -= (*it).second; alloc_allocs.erase(it); } ++alloc_frees; free(p); }
static void bkfree_all() { //printf("bkfree_all - %d\n", (int)alloc_current); AllocMapIt it = alloc_allocs.begin(); if (it != alloc_allocs.end()) { free((*it).first); ++it; } alloc_current = 0; alloc_allocs.clear(); }
static void *bkrealloc(fz_memorycontext *mem, void *p, int n) { ++alloc_reallocs; alloc_realloc_size += n; alloc_large_realloc = alloc_large_realloc < n ? n : alloc_large_realloc; AllocMapIt it = alloc_allocs.find(p); if (it != alloc_allocs.end()) { alloc_current -= (*it).second; alloc_allocs.erase(it); } void* r = realloc(p, n); alloc_allocs[r] = n; alloc_current += n; return r; }