D:/WorkDir/SugoiProjects/SugoiTools/include/SugoiTools/debug_new.h

00001 //==========================================================
00002 // DebugNew.h
00003 //
00004 // Surcharge des opérateurs / fonctions d'allocation et de
00005 // désallocation de la mémoire pour traquer les fuites
00006 //
00007 //==========================================================
00008 
00009 #ifdef _DEBUG
00010 
00011 #ifndef DEBUGNEW_H
00012 #define DEBUGNEW_H
00013 
00014 //==========================================================
00015 // En-têtes
00016 //==========================================================
00017 #include "SugoiTools\config.h"
00018 
00019 namespace SGE{
00020 #if 0// SG_TLS_MEMORY_MANAGER
00021 
00022 
00023 #include <SugoiTools\memory_manager.h>
00024 
00025 
00027 // Surcharge de l'opérateur new
00028 //
00029 // [in] Size : Taille à allouer
00030 // [in] File : Fichier source
00031 // [in] Line : Ligne dans le fichier source
00032 //
00033 // [retval] Pointeur sur la zone allouée
00034 //
00036 inline void* operator new(std::size_t Size, const char* File, int Line)
00037 {
00038     return CMemoryManager::Instance().Allocate(Size, File, Line, false);
00039 }
00040 
00041 
00043 // Surcharge de l'opérateur new[]
00044 //
00045 // [in] Size : Taille à allouer
00046 // [in] File : Fichier source
00047 // [in] Line : Ligne dans le fichier source
00048 //
00049 // [retval] Pointeur sur la zone allouée
00050 //
00052 inline void* operator new[](std::size_t Size, const char* File, int Line)
00053 {
00054     return CMemoryManager::Instance().Allocate(Size, File, Line, true);
00055 }
00056 
00057 
00059 // Surcharge de l'opérateur delete
00060 //
00061 // [in] Ptr : Pointeur sur la zone à libérer
00062 //
00064 inline void operator delete(void* Ptr)
00065 {
00066     CMemoryManager::Instance().Free(Ptr, false);
00067 }
00068 
00069 
00071 // Surcharge de l'opérateur delete
00072 //
00073 // [in] Ptr :  Pointeur sur la zone à libérer
00074 // [in] File : Fichier source
00075 // [in] Line : Ligne dans le fichier source
00076 //
00078 inline void operator delete(void* Ptr, const char* File, int Line)
00079 {
00080     CMemoryManager::Instance().NextDelete(File, Line);
00081     CMemoryManager::Instance().Free(Ptr, false);
00082 }
00083 
00084 
00086 // Surcharge de l'opérateur delete[]
00087 //
00088 // [in] Ptr : Pointeur sur la zone à libérer
00089 //
00091 inline void operator delete[](void* Ptr)
00092 {
00093     CMemoryManager::Instance().Free(Ptr, true);
00094 }
00095 
00096 
00098 // Surcharge de l'opérateur delete[]
00099 //
00100 // [in] Ptr :  Pointeur sur la zone à libérer
00101 // [in] File : Fichier source
00102 // [in] Line : Ligne dans le fichier source
00103 //
00105 inline void operator delete[](void* Ptr, const char* File, int Line)
00106 {
00107     CMemoryManager::Instance().NextDelete(File, Line);
00108     CMemoryManager::Instance().Free(Ptr, true);
00109 }
00110 
00111 #endif // DEBUGNEW_H
00112 
00113 
00114 //==========================================================
00115 // Définition de macros servant à automatiser le tracking
00116 // /!\ sortir des directives anti-réinclusions !
00117 //==========================================================
00118 /*
00119 #ifndef new
00120     #define new    new(__FILE__, __LINE__)
00121     #define delete CMemoryManager::Instance().NextDelete(__FILE__, __LINE__), delete
00122 #endif
00123 */
00124 };//namespace SGE
00125 #endif //SG_TLS_MEMORY_MANAGER
00126 
00127 #endif // _DEBUG

Generated on Mon Mar 19 23:15:11 2007 for SugoiTools by  doxygen 1.4.6-NO