From 00ce37145556279f4982ef52a747cb2f5e3e3081 Mon Sep 17 00:00:00 2001 From: Christian C Date: Wed, 2 Apr 2025 18:15:13 -0700 Subject: Fixed Memory Leak --- lib/mem/galloc.c | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) (limited to 'lib/mem') 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 + #include #include +#include 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; } -- cgit v1.2.1