Bijour à tous !
Bon alors voila, je souhaite avoir plus d'info au niveau du dump des memory leaks dans mon code, car actuellement c'est le dump standard qui ne contient donc pas le nom du fichier et la ligne ou à été faite l'allocation suspecte.
G donc rajouté _CRTDBG_MAP_ALLOC au niveau de mes definitions preprocesseurs ... Ce qui est censé rajouter les informations complémentaires que je souhaite, au niveau de l'output window.
Le probléme dans mon cas est que j'ai donc mon application MFC qui est donc un de mes projets du workspace, mais j'ai également plusieurs autres projets librairies (ma lib mathematique, ma lib noyau etc ...).
Quand je trace les appels à new, ca appelle en effet la fonction new surchargé pour le debug, en passant le nom du fichier et la ligne, mais ca seulement pour les new effectués dans mon application MFC executable. Quand je met un breakpoint sur un new d'un de mes projets librairie, je me rend compte que ca appelle bien la fonction new surchargée qui se trouve dans crtdbg.h :
par contre le __FILE__ et __LINE__ ne sont pas remplis correctement, car je pense qu'il s'agit d'un appel librairie et qu'il ne sait donc pas le nom et la ligne du fichier appellant concerné.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 inline void* __cdecl operator new(unsigned int s) { return ::operator new(s, _NORMAL_BLOCK, __FILE__, __LINE__); }
Je me retrouve donc avec ca en sortie :
Ce qui ne me convient pas trop, en effet il detecte que le new a ete appellé au niveau de crtdbg.h ... super mais je le sait ca et je m'en fou.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Detected memory leaks! Dumping objects -> C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\crtdbg.h(552) : {3143} normal block at 0x00940690, 48 bytes long. Data: < > 18 00 00 00 1F 00 00 00 97 00 00 00 06 01 00 00 C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\crtdbg.h(552) : {3142} normal block at 0x009406F0, 48 bytes long. Data: < 3 > 1C 00 00 00 A1 00 00 00 01 01 00 00 33 01 00 00 C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\crtdbg.h(552) : {3136} normal block at 0x009405B0, 56 bytes long. Data: < = > 01 00 00 00 11 00 00 00 17 00 00 00 3D 00 00 00
J'aimerai donc savoir comment je peux faire pour avoir ces informations precises également pour mes projets de librairie !
Ca urge assez, alors si qqun à une solution, merci de me faire signe, je galére assez la !
Tchahhhhaoaooo !!![/code]
Partager