diff options
Diffstat (limited to 'py/malloc.c')
-rw-r--r-- | py/malloc.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/py/malloc.c b/py/malloc.c new file mode 100644 index 000000000..8775f68aa --- /dev/null +++ b/py/malloc.c @@ -0,0 +1,56 @@ +#include <stdio.h> +#include <stdlib.h> + +#include "misc.h" + +static int total_bytes_allocated = 0; + +void m_free(void *ptr) { + if (ptr != NULL) { + free(ptr); + } +} + +void *m_malloc(int num_bytes) { + if (num_bytes == 0) { + return NULL; + } + void *ptr = malloc(num_bytes); + if (ptr == NULL) { + printf("could not allocate memory, allocating %d bytes\n", num_bytes); + return NULL; + } + total_bytes_allocated += num_bytes; + return ptr; +} + +void *m_malloc0(int num_bytes) { + if (num_bytes == 0) { + return NULL; + } + void *ptr = calloc(1, num_bytes); + if (ptr == NULL) { + printf("could not allocate memory, allocating %d bytes\n", num_bytes); + return NULL; + } + total_bytes_allocated += num_bytes; + return ptr; +} + +void *m_realloc(void *ptr, int num_bytes) { + if (num_bytes == 0) { + free(ptr); + return NULL; + } + ptr = realloc(ptr, num_bytes); + if (ptr == NULL) { + printf("could not allocate memory, reallocating %d bytes\n", num_bytes); + return NULL; + } + total_bytes_allocated += num_bytes; + return ptr; +} + +int m_get_total_bytes_allocated() { + return total_bytes_allocated; +} |