34 #ifndef _cvc3__memory_manager_chunks_h
35 #define _cvc3__memory_manager_chunks_h
56 d_nextFree = (
char*)malloc(d_chunkSizeBytes);
59 d_chunkList.push_back(d_nextFree);
65 : d_dataSize(dataSize), d_chunkSize(chunkSize),
66 d_chunkSizeBytes(dataSize*chunkSize),
67 d_nextFree(NULL), d_endChunk(NULL) { }
70 while(d_chunkList.size() > 0) {
71 free(d_chunkList.back());
72 d_chunkList.pop_back();
78 "MemoryManager::newData: the data size doesn't match");
81 if(d_freeList.size() > 0) {
82 res = (
void*)d_freeList.back();
83 d_freeList.pop_back();
86 if(d_nextFree == NULL || d_nextFree == d_endChunk)
88 res = (
void*)d_nextFree;
94 d_freeList.push_back((
char*)d);
void * newData(size_t size)
MemoryManagerChunks(unsigned dataSize, unsigned chunkSize=1024)
#define DebugAssert(cond, str)
std::vector< char * > d_chunkList
#define FatalAssert(cond, msg)
If something goes horribly wrong, print a message and abort immediately with exit(1).
std::vector< char * > d_freeList
unsigned d_chunkSizeBytes