#include "stdio.h" #include "stdlib.h" #include "string.h" #include "memory.h" /* ---------------------------------------------------------------------- safe malloc ------------------------------------------------------------------------- */ void *Memory::smalloc(bigint nbytes, const char *name) { if (nbytes == 0) return NULL; void *ptr = malloc(nbytes); if (ptr == NULL) printf("Failed to allocate " BIGINT_FORMAT "bytes for array %s", nbytes,name); return ptr; } /* ---------------------------------------------------------------------- safe realloc ------------------------------------------------------------------------- */ void *Memory::srealloc(void *ptr, bigint nbytes, const char *name) { if (nbytes == 0) { destroy(ptr); return NULL; } ptr = realloc(ptr,nbytes); if (ptr == NULL) printf("Failed to reallocate " BIGINT_FORMAT "bytes for array %s", nbytes,name); return ptr; } /* ---------------------------------------------------------------------- safe free ------------------------------------------------------------------------- */ void Memory::sfree(void *ptr) { if (ptr == NULL) return; free(ptr); } /* ---------------------------------------------------------------------- erroneous usage of templated create/grow functions ------------------------------------------------------------------------- */ void Memory::fail(const char *name) { printf("Cannot create/grow a vector/array of pointers for %s",name); }