2009-04-09 7 views
1

J'ai une application qui continue à utiliser de plus en plus de mémoire au fil du temps (en cours d'exécution), mais il n'y a pas de fuite. Donc, je sais que le programme ne fait pas quelque chose de totalement faux, ce qui serait facile à trouver. Au lieu de cela, je veux suivre les allocations afin que je puisse commencer à localiser le problème, et sur un Mac j'utiliserais les Instruments, qui donne un profil détaillé des objets qui ont été alloués, et par qui, mais sur Windows J'utilise?Quels sont les bons outils pour mesurer les allocations de mémoire sous Windows?

Actuellement, je travaille avec C/C++ sur Windows XP, en utilisant VS2005. Donc, tous les outils pour cette configuration seraient géniaux, et j'espère que les outils gratuits ou au moins fournir quelques semaines d'essai, car il faudra un certain temps pour terminer tout achat (entreprise) si nécessaire, et j'ai des délais.

Merci!

Edit: J'utilise VLD, donc je sais que le programme n'a pas Fuites, mais il semble être monopoliser plus de mémoire que nécessaire, et non le retourner, donc je dois suivre les allocations, pas de fuites.

Répondre

1

Glowcode is here. Il a la pire interface utilisateur dans le monde. Les internes ont les choses bien, si vous avez la patience de lutter contre l'horreur qui essaie de faire fonctionner correctement. Il y a un essai gratuit de 21 jours. J'ai trouvé que c'était un sauveur, mais vous devez vraiment vouloir trouver ce bug.

+0

Après avoir essayé Glowcode, je me souviens que je l'avais utilisé il y a environ 4 ans, mais semble que cela n'a pas beaucoup changé depuis :) Quoi qu'il en soit cela fonctionne, mais Canopus MemoryValidator a une interface utilisateur beaucoup plus conviviale –

+0

Si quoi que ce soit ça a empiré. Je l'aime bien cependant. Je pense que j'ai débogueur syndrome de Stockholm –

0

Visual Studio Activation de la mémoire de fuite Détection

Les principaux outils de détection de fuites mémoire sont le débogueur et les fonctions de tas de débogage CRT . Pour activer les fonctions de tas de débogage , inclure les énoncés suivants dans votre programme:

#define CRTDBG_MAP_ALLOC 
#include <stdlib.h> 
#include <crtdbg.h> 

http://msdn.microsoft.com/en-us/library/e5ewb1h3(VS.71).aspx

+0

Est-ce que cela aidera s'il n'y a pas de fuites de mémoire réelle? Je pense qu'il parle d'une situation d'utilisation croissante de la mémoire au fil du temps, pas forcément d'une fuite –

+0

Désolé mais je ne parle pas de Memory Leaks, mon programme se nettoie parfaitement quand il se termine, pas de fuites quoi que ce soit. Le problème est qu'il continue d'allouer et d'allouer mais ne retourne pas de mémoire jusqu'à ce qu'il se termine, ou quelque chose comme ça. –