diff options
Diffstat (limited to 'src/malloc')
-rw-r--r-- | src/malloc/malloc_usable_size.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/malloc/malloc_usable_size.c b/src/malloc/malloc_usable_size.c new file mode 100644 index 00000000..8cccd9d8 --- /dev/null +++ b/src/malloc/malloc_usable_size.c @@ -0,0 +1,17 @@ +#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 CHUNK_SIZE(MEM_TO_CHUNK(p)) - OVERHEAD; +} |