diff options
author | Christian C <cc@localhost> | 2025-04-02 18:15:13 -0700 |
---|---|---|
committer | Christian C <cc@localhost> | 2025-04-02 18:15:13 -0700 |
commit | 00ce37145556279f4982ef52a747cb2f5e3e3081 (patch) | |
tree | aeee1e555d11bed381f1fdb34f3d95ba1aa05ea8 /lib/mem/galloc.c | |
parent | ec7436a01deb8e28743de47ad98950c914d6da2a (diff) |
Fixed Memory Leak
Diffstat (limited to 'lib/mem/galloc.c')
-rw-r--r-- | lib/mem/galloc.c | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/lib/mem/galloc.c b/lib/mem/galloc.c index 642e010..ea4ea16 100644 --- a/lib/mem/galloc.c +++ b/lib/mem/galloc.c @@ -1,29 +1,46 @@ -#include <lib/mem/galloc.h> + #include <lib/mem/galloc.h> #include <stdlib.h> +#include <stdio.h> static ssize_t standing_allocations = 0; -void *g_malloc(size_t size) { +void *_g_malloc(size_t size, char* file, unsigned int line) { void *ptr = malloc(size); if (ptr == NULL) { return ptr; } + fprintf(stderr, "+%p :a: %s:%d\n", ptr, file, line); standing_allocations++; return ptr; } -void *g_calloc(size_t n_memb, size_t size) { +void *_g_calloc(size_t n_memb, size_t size, char* file, unsigned int line) { void *ptr = calloc(n_memb, size); if (ptr == NULL) { return ptr; } + fprintf(stderr, "+%p :c: %s:%d\n", ptr, file, line); standing_allocations++; return ptr; } -void g_free(void *ptr) { - free(ptr); - standing_allocations--; +void *_g_realloc(void *ptr, size_t size, char* file, unsigned int line) { + fprintf(stderr, "-%p :r: %s:%d\n", ptr, file, line); + void* temp = realloc(ptr, size); + if (temp == NULL) { + fprintf(stderr, "+%p :r: %s:%d\n", ptr, file, line); + } else { + fprintf(stderr, "+%p :r: %s:%d\n", temp, file, line); + } + return temp; +} + +void _g_free(void *ptr, char* file, unsigned int line) { + if (ptr != NULL) { + fprintf(stderr, "-%p :f: %s:%d\n", ptr, file, line); + free(ptr); + standing_allocations--; + } } ssize_t g_outstanding_allocations() { return standing_allocations; } |