aboutsummaryrefslogtreecommitdiff
path: root/py/malloc.c
diff options
context:
space:
mode:
authorDamien <damien.p.george@gmail.com>2013-10-04 19:53:11 +0100
committerDamien <damien.p.george@gmail.com>2013-10-04 19:53:11 +0100
commit429d71943d6b94c7dc3c40a39ff1a09742c77dc2 (patch)
treeb0fd643076254656c358806d7e47c18f796a54f3 /py/malloc.c
Initial commit.
Diffstat (limited to 'py/malloc.c')
-rw-r--r--py/malloc.c56
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;
+}