2010-02-04 5 views
1

Je voudrais utiliser Electric Fence dans une application MFC. Je voudrais suivre new/delete, et si je peux suivre malloc/free c'est un bonus supplémentaire.Est-il possible de remplacer l'allocateur de mémoire dans une version de débogage d'une application MFC?

Malheureusement, MFC redéfinit new et delete - mais en utilisant des macros (DEBUG_NEW) - donc je ne peux pas utiliser la méthode standard C++ pour les redéfinir. (MFC les définit pour avoir différentes signatures, avec le fichier source et les numéros de ligne comme paramètres supplémentaires).

Existe-t-il un moyen de forcer tous les new/delete à passer par mon allocateur et d'empêcher MFC d'essayer de récupérer ces allocateurs?

+0

Pourquoi ne pouvez-vous définir votre propre DEBUG_NEW macro et de l'utiliser au lieu de MFCs? –

+0

Il semble que peu importe comment j'essaie d'obtenir toutes les macros, il y a toujours du code dans les entrailles de MFC qui va essayer d'utiliser l'allocateur de débogage. – stusmith

+0

Malheureusement, le projet que je suis prend environ. 30 minutes pour compiler, donc chaque petite modification aux en-têtes principaux gaspille une grande partie de ma journée. Je vais essayer d'autres changements ce soir et le laisser se développer du jour au lendemain. – stusmith

Répondre

1

Vous pouvez arrêter le MFC crochetage de nouveau en redéfinissant DEBUG_NEW à la fin de stdafx.h

#undef DEBUG_NEW 
#define DEBUG_NEW new 
+0

Malheureusement, j'ai essayé - je n'arrivais pas à les éliminer tous. Certains d'entre eux semblent être contrôlés par _AFX_NO_DEBUG_CRT, qu'il n'est pas possible de changer. J'ai trouvé que certains semblent toujours glisser à travers. – stusmith

+0

Marquage comme réponse correcte car je pense que le problème que j'ai est spécifique à notre application. – stusmith