X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=mymemory.h;h=6b35f5d14f0efb46738d9389c2e8af72c9d3c6a7;hb=381e2769f94f7e41c1c90d3ab633a37136fa24b0;hp=b200ae0160c8c0c8ba39ad31384689271986a384;hpb=3cbae521c9cbc4901a8f503612871f3139547e14;p=model-checker.git diff --git a/mymemory.h b/mymemory.h index b200ae0..6b35f5d 100644 --- a/mymemory.h +++ b/mymemory.h @@ -9,33 +9,42 @@ /** MEMALLOC declares the allocators for a class to allocate * memory in the non-snapshotting heap. */ - #define MEMALLOC \ void * operator new(size_t size) { \ - return MYMALLOC(size);\ + return model_malloc(size);\ }\ void operator delete(void *p, size_t size) { \ - MYFREE( p ); \ + model_free( p ); \ }\ void * operator new[](size_t size) { \ - return MYMALLOC(size);\ + return model_malloc(size);\ }\ void operator delete[](void *p, size_t size) {\ - MYFREE(p);\ + model_free(p);\ } /** SNAPSHOTALLOC declares the allocators for a class to allocate * memory in the snapshotting heap. */ - #define SNAPSHOTALLOC -void *MYMALLOC(size_t size); -void MYFREE(void *ptr); +void *model_malloc(size_t size); +void *model_calloc(size_t count, size_t size); +void model_free(void *ptr); + +static inline void * snapshot_malloc(size_t size) { + return malloc(size); +} +static inline void * snapshot_calloc(size_t count, size_t size) { + return calloc(count, size); +} +static inline void snapshot_free(void *ptr) { + free(ptr); +} void system_free( void * ptr ); void *system_malloc( size_t size ); -/** @brief Provides a non-snapshotting allocators for a STL class. +/** @brief Provides a non-snapshotting allocator for use in STL classes. * * The code was adapted from a code example from the book The C++ * Standard Library - A Tutorial and Reference by Nicolai M. Josuttis, @@ -45,7 +54,6 @@ void *system_malloc( size_t size ); * This software is provided "as is" without express or implied * warranty, and with no claim as to its suitability for any purpose. */ - template class MyAlloc { public: @@ -92,7 +100,7 @@ template // allocate but don't initialize num elements of type T pointer allocate (size_type num, const void* = 0) { - pointer p = ( pointer )MYMALLOC( num * sizeof( T ) ); + pointer p = ( pointer )model_malloc( num * sizeof( T ) ); return p; } @@ -110,7 +118,7 @@ template // deallocate storage p of deleted elements void deallocate (pointer p, size_type num) { - MYFREE((void*)p); + model_free((void*)p); } };