#include "shim.h" struct chunk { size_t psize, csize; struct chunk *next, *prev; }; #define OVERHEAD (2*sizeof(size_t)) #define CHUNK_SIZE(c) ((c)->csize & -2) #define MEM_TO_CHUNK(p) (struct chunk *)((char *)(p) - OVERHEAD) size_t malloc_usable_size(void *p) { return p ? CHUNK_SIZE(MEM_TO_CHUNK(p)) - OVERHEAD : 0; }