Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef __MEMORY_H__
00012 #define __MEMORY_H__
00013
00014 #include <stdio.h>
00015 #include <stdlib.h>
00016
00017 #include <new>
00018
00019 void* operator new(size_t size) throw (std::bad_alloc);
00020 void operator delete(void *p);
00021
00022 void* operator new[](size_t size);
00023 void operator delete[](void *p);
00024
00025
00026 #ifdef TRACE_MEMORY_ALLOCS
00027 namespace shogun
00028 {
00029 class MemoryBlock
00030 {
00031 public:
00032 MemoryBlock(void* p)
00033 {
00034 ptr=p;
00035 size=0;
00036 }
00037
00038 MemoryBlock(void* p, size_t sz)
00039 {
00040 ptr=p;
00041 size=sz;
00042 }
00043
00044 MemoryBlock(const MemoryBlock &b)
00045 {
00046 ptr=b.ptr;
00047 size=b.size;
00048 }
00049
00050
00051 bool operator==(const MemoryBlock &b) const
00052 {
00053 return ptr==b.ptr;
00054 }
00055
00056 void display()
00057 {
00058 printf("Object at %p of size %lld bytes\n", ptr, (long long int) size);
00059 }
00060
00061 protected:
00062 void* ptr;
00063 size_t size;
00064 };
00065
00066 void list_memory_allocs();
00067 }
00068 #endif
00069 #endif // __MEMORY_H__