En fait, j'ai le même soucis que lui :
http://public.kitware.com/Bug/view.php?id=3834
Pour détecter les leak, j'ai un gestionnaire de mémoire qui fait les allocation et qui en même temps stock les pointeurs/taille/fichiers et ligne dans le fichier.
Lors que je fais un "delete", ça retire l'enregistrement de l'allocation.
Lorsque le programme se ferme, ça reprend les allocations enregistrées (où il y a eu un new et pas de delete) et ça les inscrit dans un fichier.
Je redéfinit donc les opérateurs.
inline void* operator new(std::size_t stSize, const char* szFilename, unsigned int uiLine, const std::string sFunction)
inline void operator delete(void* pvPointer) throw()
Puis je fais de define pour utiliser ces opérateurs
1 2 3
|
#define new new(__FILE__, __LINE__, __FUNCTION__)
#define delete CMemoryManager::Instance().NextDelete(__FILE__, __LINE__, __FUNCTION__), delete |
Le new ne pose pas de problème quant aux arguments que j'ai
Par contre le delete pose un soucis étant donné que les MFC possède aussi ce delete.
Partager