aaaaaa123456789

Allocation tracking - malloc wrappers

Oct 24th, 2022
1,605
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.21 KB | Source Code | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stddef.h>
  4.  
  5. extern void * __libc_malloc(size_t);
  6. extern void * __libc_memalign(size_t, size_t);
  7. extern void * __libc_realloc(void *, size_t);
  8. extern void * __libc_calloc(size_t, size_t);
  9. extern void __libc_free(void *);
  10.  
  11. static void memlog (const char * keyword, size_t size, size_t reference, void * result) {
  12.   fprintf(stderr, "%7s %#18zx %#18zx %18p\n", keyword, reference, size, result);
  13. }
  14.  
  15. extern void * malloc (size_t size) {
  16.   void * result = __libc_malloc(size);
  17.   memlog("malloc", size, 0, result);
  18.   return result;
  19. }
  20.  
  21. extern void * aligned_alloc (size_t alignment, size_t size) {
  22.   void * result = __libc_memalign(alignment, size);
  23.   memlog("malloc", size, alignment, result);
  24.   return result;
  25. }
  26.  
  27. extern void * calloc (size_t members, size_t size) {
  28.   void * result = __libc_calloc(members, size);
  29.   memlog("calloc", size, members, result);
  30.   return result;
  31. }
  32.  
  33. extern void * realloc (void * buffer, size_t size) {
  34.   void * result = __libc_realloc(buffer, size);
  35.   memlog("realloc", size, (size_t) buffer, result);
  36.   return result;
  37. }
  38.  
  39. extern void free (void * buffer) {
  40.   memlog("free", 0, (size_t) buffer, NULL);
  41.   __libc_free(buffer);
  42. }
Advertisement
Add Comment
Please, Sign In to add comment