UTMemDebug.h
Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 #ifndef _UT_H_
00026 #error "DO NOT INCLUDE THIS FILE - INCLUDE UT.h INSTEAD"
00027 #endif
00028 
00029 
00030 EXTERN_C_BEGIN
00031 
00032 extern UT_EXPORT void*  malloc_MEMDEBUG(size_t size);
00033 extern UT_EXPORT void   free_MEMDEBUG(void* ptr);
00034 extern UT_EXPORT void*  calloc_MEMDEBUG( size_t num, size_t size );
00035 extern UT_EXPORT void*  realloc_MEMDEBUG( void* ptr, size_t size );
00036 
00037 #define malloc          malloc_MEMDEBUG
00038 #define free            free_MEMDEBUG
00039 #define calloc          calloc_MEMDEBUG
00040 #define realloc         realloc_MEMDEBUG
00041 
00042 EXTERN_C_END
00043 
00044 
00045 #if __cplusplus
00046 
00047 inline void*
00048 operator new(size_t size)
00049 {
00050     void* buffer = malloc_MEMDEBUG(size);
00051     if(!buffer)
00052         throw std::bad_alloc();
00053     return buffer;
00054 }
00055 
00056 
00057 inline void*
00058 operator new( size_t size, std::nothrow_t const& )
00059 {
00060     return malloc_MEMDEBUG(size);
00061 }
00062 
00063 
00064 inline void*
00065 operator new[](size_t size)
00066 {
00067     void* buffer = malloc_MEMDEBUG(size);
00068     if(!buffer)
00069         throw std::bad_alloc();
00070     return buffer;
00071 }
00072 
00073 
00074 inline void*
00075 operator new[]( size_t size, std::nothrow_t const& )
00076 {
00077     return malloc_MEMDEBUG(size);
00078 }
00079 
00080 
00081 inline void
00082 operator delete(void* p)
00083 {
00084     free_MEMDEBUG(p);
00085 }
00086 
00087 inline void
00088 operator delete[](void* p)
00089 {
00090     free_MEMDEBUG(p);
00091 }
00092 
00093 
00094 #endif // __cplusplus