#include #include #include extern void * __libc_malloc(size_t); extern void * __libc_memalign(size_t, size_t); extern void * __libc_realloc(void *, size_t); extern void * __libc_calloc(size_t, size_t); extern void __libc_free(void *); static void memlog (const char * keyword, size_t size, size_t reference, void * result) { fprintf(stderr, "%7s %#18zx %#18zx %18p\n", keyword, reference, size, result); } extern void * malloc (size_t size) { void * result = __libc_malloc(size); memlog("malloc", size, 0, result); return result; } extern void * aligned_alloc (size_t alignment, size_t size) { void * result = __libc_memalign(alignment, size); memlog("malloc", size, alignment, result); return result; } extern void * calloc (size_t members, size_t size) { void * result = __libc_calloc(members, size); memlog("calloc", size, members, result); return result; } extern void * realloc (void * buffer, size_t size) { void * result = __libc_realloc(buffer, size); memlog("realloc", size, (size_t) buffer, result); return result; } extern void free (void * buffer) { memlog("free", 0, (size_t) buffer, NULL); __libc_free(buffer); }