void debugFree(void *memoryParameter, int tag) { unsigned char *memory; struct chunkHeader *chunkHeader; struct chunkTrailer *chunkTrailer; struct chunkHeader *walker; struct chunkHeader *previous; memory = memoryParameter; chunkHeader = (struct chunkHeader *)(memory - sizeof(struct chunkHeader)); if (chunkHeader->magicNumber != MAGIC_NUMBER) { fprintf(stderr, "debugFree - invalid magic number in header: %08x, malloc tag = %d, free tag = %d\n", chunkHeader->magicNumber, chunkHeader->tag, tag); exit(1); } previous = NULL; for (walker = chunkList; walker != NULL; walker = walker->next) { if (walker == chunkHeader) break; previous = walker; } if (walker == NULL) { fprintf(stderr, "Double free detected, malloc tag = %d, free tag = %d\n", chunkHeader->tag, tag); exit(1); } if (previous == NULL) chunkList = walker->next; else previous->next = walker->next; chunkTrailer = (struct chunkTrailer *)(memory + chunkHeader->length); if (chunkTrailer->magicNumber != MAGIC_NUMBER) { fprintf(stderr, "debugFree - invalid magic number in trailer: %08x, malloc tag = %d, free tag = %d\n", chunkTrailer->magicNumber, chunkHeader->tag, tag); exit(1); } #if defined MEMORY_USAGE removeMemory( chunkHeader->tag, tag ); #endif free(chunkHeader); }
bool JdbcUtil::memoryInit(void) { setError(NULL); if (!removeMemory()) return false; if (!removeSemaphores()) return false; if (!getMemory(true)) return false; if (!attachMemory()) return false; memset(sharedMemory,0,SHARED_MEMORY_SIZE); sharedMemory->active = true; if (!getSemaphores(true)) return false; if (semctl(semaphoreId, 0, SETVAL, 1) == -1) { int err = errno; removeMemory(); removeSemaphores(); setPerror(err,"Cannot initialize semaphore value"); return false; } return true; }
void _debugFree(void *memoryParameter, int tag) { unsigned char *memory; struct chunkHeader *chunkHeader; struct chunkTrailer *chunkTrailer; struct chunkHeader *walker; struct chunkHeader *previous; memory = memoryParameter; chunkHeader = (struct chunkHeader *)(memory - sizeof(struct chunkHeader)); if (chunkHeader->magicNumber != MAGIC_NUMBER) { dbgf( DBGL_SYS, DBGT_ERR, "invalid magic number in header: %08x, malloc tag = %d, free tag = %d", chunkHeader->magicNumber, chunkHeader->tag, tag ); cleanup_all( -500080 ); } previous = NULL; for (walker = chunkList; walker != NULL; walker = walker->next) { if (walker == chunkHeader) break; previous = walker; } if (walker == NULL) { dbg( DBGL_SYS, DBGT_ERR, "Double free detected, malloc tag = %d, free tag = %d", chunkHeader->tag, tag ); cleanup_all( -500081 ); } if (previous == NULL) chunkList = walker->next; else previous->next = walker->next; chunkTrailer = (struct chunkTrailer *)(memory + chunkHeader->length); if (chunkTrailer->magicNumber != MAGIC_NUMBER) { dbgf( DBGL_SYS, DBGT_ERR, "invalid magic number in trailer: %08x, malloc tag = %d, free tag = %d", chunkTrailer->magicNumber, chunkHeader->tag, tag ); cleanup_all( -500082 ); } #ifdef MEMORY_USAGE removeMemory( chunkHeader->tag, tag ); #endif free(chunkHeader); }
/* Clear all the entries */ void MainTransitionFunction::clearTable(void) { removeMemory(); mTable.clear(); }
MainTransitionFunction::~MainTransitionFunction() { removeMemory(); }