#include <malloc.h> | |
void* (*const __realloc_dep)(void*, size_t) = realloc; | |
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; | |
} |