11 static void * (*real_malloc)(size_t) = NULL;
12 static void (*real_free)(void *ptr) = NULL;
14 static void __my_alloc_init(void) {
15 real_malloc = (void *(*)(size_t))dlsym(RTLD_NEXT, "malloc");
16 real_free = (void (*)(void *))dlsym(RTLD_NEXT, "free");
17 if (real_malloc == NULL || real_free == NULL) {
18 fprintf(stderr, "Error in `dlsym`: %s\n", dlerror());
23 void * myMalloc(size_t size) {
24 if (real_malloc == NULL)
27 return real_malloc(size);
30 void myFree(void *ptr)
32 if (real_free == NULL)
38 void * operator new(size_t size) throw(std::bad_alloc)
40 return myMalloc(size);
43 void operator delete(void *p) throw()