blob: aa22379738a44fb43afd668f0ed4aeb74b91b7dc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
#include <stdlib.h>
#include <stdio.h>
#define __USE_GNU
#include <dlfcn.h>
typedef void* (*real_malloc_t) (size_t);
static real_malloc_t real_malloc = NULL;
static void __mtrace_init(void)
{
real_malloc = (real_malloc_t) dlsym(RTLD_NEXT, "malloc");
if (NULL == real_malloc) {
fprintf(stderr, "Error in `dlsym`: %s\n", dlerror());
return;
}
}
void *malloc(size_t size)
{
if(real_malloc == NULL)
__mtrace_init();
void *p = NULL;
fprintf(stderr, "malloc(%zu) = ", size);
p = real_malloc(size);
fprintf(stderr, "%p\n", p);
return p;
}
int main(int argc, char **argv, char **env)
{
void * nothing = malloc(666);
free(nothing);
}
|