/************************************************************************* * This function is my wrapper around realloc **************************************************************************/ void *gk_realloc(void *oldptr, size_t nbytes, char *msg) { void *ptr=NULL; if (nbytes == 0) nbytes++; /* Force mallocs to actually allocate some memory */ /* remove this memory de-allocation */ if (gkmcore != NULL && oldptr != NULL) gk_gkmcoreDel(gkmcore, oldptr); ptr = (void *)realloc(oldptr, nbytes); if (ptr == NULL) { fprintf(stderr, " Maximum memory used: %10zu bytes\n", gk_GetMaxMemoryUsed()); fprintf(stderr, " Current memory used: %10zu bytes\n", gk_GetCurMemoryUsed()); gk_errexit(SIGMEM, "***Memory realloc failed for %s. " "Requested size: %zu bytes", msg, nbytes); return NULL; } /* add this memory allocation */ if (gkmcore != NULL) gk_gkmcoreAdd(gkmcore, GK_MOPT_HEAP, nbytes, ptr); return ptr; }
void *gk_malloc(size_t nbytes, char *msg) { void *ptr=NULL; if (nbytes == 0) nbytes++; /* Force mallocs to actually allocate some memory */ ptr = (void *)malloc(nbytes); if (ptr == NULL) { fprintf(stderr, " Current memory used: %10zu bytes\n", gk_GetCurMemoryUsed()); fprintf(stderr, " Maximum memory used: %10zu bytes\n", gk_GetMaxMemoryUsed()); gk_errexit(SIGMEM, "***Memory allocation failed for %s. Requested size: %zu bytes", msg, nbytes); return NULL; } /* add this memory allocation */ if (gkmcore != NULL) gk_gkmcoreAdd(gkmcore, GK_MOPT_HEAP, nbytes, ptr); /* zero-out the allocated space */ #ifndef NDEBUG memset(ptr, 0, nbytes); #endif return ptr; }
void gk_gkmcorePush(gk_mcore_t *mcore) { gk_gkmcoreAdd(mcore, GK_MOPT_MARK, 0, NULL); /* printf("MCPPUSH: %zu\n", mcore->cmop-1); */ }