#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
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);
}
Comments