summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/MemAllocate.c60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/main/MemAllocate.c b/src/main/MemAllocate.c
new file mode 100644
index 00000000..b44da9a1
--- /dev/null
+++ b/src/main/MemAllocate.c
@@ -0,0 +1,60 @@
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdarg.h>
+
+#include "cctk_Config.h"
+#include "cctki_Cache.h"
+#include "cctk_Parameters.h"
+
+
+#define MEMDEBUG
+
+static int totmem=0;
+
+typedef struct
+{
+ int size;
+ int line;
+ char *file;
+} iMemData;
+
+void *CCTKi_malloc(size_t size, int line, const char *file)
+{
+ iMemData *memdata;
+ char *foo;
+
+ foo = malloc(size+sizeof(iMemData));
+ if (!foo) printf("Allocation error! ");
+ memdata = foo;
+ memdata->size = size;
+ memdata->line = line;
+ memdata->file = file;
+ totmem +=size;
+#ifdef MEMDEBUG
+ printf("Allocating %d - by %s in line %d TOTAL: %d\n",
+ memdata->size,memdata->file,memdata->line, CCTKi_TotalMemory());
+#endif
+
+ return((void*)(foo+sizeof(iMemData)));
+}
+
+void CCTKi_free(void *foo)
+{
+ iMemData *memdata;
+ memdata = ((char*)foo)-sizeof(iMemData);
+#ifdef MEMDEBUG
+ printf("Freeing %d - allocated by %s in line %d TOTAL: %d\n",
+ memdata->size,memdata->file,memdata->line, CCTKi_TotalMemory());
+#endif
+ totmem-=memdata->size;
+ free(memdata);
+}
+
+int CCTK_TotalMemory()
+{
+ return(totmem);
+}
+