#include #include #include "jv_alloc.h" static void memory_exhausted() { fprintf(stderr, "error: cannot allocate memory\n"); abort(); } void* jv_mem_alloc(size_t sz) { void* p = malloc(sz); if (!p) { memory_exhausted(); } return p; } void jv_mem_free(void* p) { free(p); } void* jv_mem_realloc(void* p, size_t sz) { p = realloc(p, sz); if (!p) { memory_exhausted(); } return p; } #ifndef NDEBUG volatile char jv_mem_uninitialised; __attribute__((constructor)) void jv_mem_uninit_setup(){ char* p = malloc(1); jv_mem_uninitialised = *p; free(p); } #endif