3 #include "snapshotimp.h"
6 #if !USE_MPROTECT_SNAPSHOT
7 static mspace sStaticSpace = NULL;
10 void *MYMALLOC(size_t size) {
11 #if USE_MPROTECT_SNAPSHOT
12 static void *(*mallocp)(size_t size);
16 /* get address of libc malloc */
18 mallocp = ( void * ( * )( size_t ) )dlsym(RTLD_NEXT, "malloc");
19 if ((error = dlerror()) != NULL) {
28 createSharedLibrary();
30 if( NULL == sStaticSpace )
31 sStaticSpace = create_mspace_with_base( ( void * )( sTheRecord->mSharedMemoryBase ), SHARED_MEMORY_DEFAULT -sizeof( struct Snapshot_t ), 1 );
32 return mspace_malloc( sStaticSpace, size );
36 void *system_malloc( size_t size ){
37 static void *(*mallocp)(size_t size);
41 /* get address of libc malloc */
43 mallocp = ( void * ( * )( size_t ) )dlsym(RTLD_NEXT, "malloc");
44 if ((error = dlerror()) != NULL) {
53 void system_free( void * ptr ){
54 static void (*freep)(void *);
57 /* get address of libc free */
59 freep = ( void ( * )( void * ) )dlsym(RTLD_NEXT, "free");
60 if ((error = dlerror()) != NULL) {
67 void MYFREE(void *ptr) {
68 #if USE_MPROTECT_SNAPSHOT
69 static void (*freep)(void *);
72 /* get address of libc free */
74 freep = ( void ( * )( void * ) )dlsym(RTLD_NEXT, "free");
75 if ((error = dlerror()) != NULL) {
82 mspace_free( sStaticSpace, ptr );
85 mspace mySpace = NULL;
86 void * basemySpace = NULL;
88 void *malloc( size_t size ) {
89 return mspace_malloc( mySpace, size );
92 void free( void * ptr ){
93 mspace_free( mySpace, ptr );
96 void *realloc( void *ptr, size_t size ){
97 return mspace_realloc( mySpace, ptr, size );
100 void * operator new(size_t size) throw(std::bad_alloc) {
104 void operator delete(void *p) throw() {
108 void * operator new[](size_t size) throw(std::bad_alloc) {
112 void operator delete[](void *p, size_t size) {