2 votes

Comment récupérer la mémoire allouée en C++

J'ai trouvé plusieurs réponses à cette question ici sur SO, mais aucune ne répond à ma question. Je cherche à traquer certaines fuites de mémoire dans notre application C++ non managée, et d'après ce que j'ai lu, il semble que "Mémoire - Taille d'engagement" soit la meilleure métrique à utiliser pour surveiller l'utilisation de la mémoire: http://forum.sysinternals.com/virtual-private-bytes-and-working-set_topic18296.html

Voici l'explication des différentes métriques rapportées par le Gestionnaire des tâches de Windows: http://windows.microsoft.com/en-us/windows-vista/what-do-the-task-manager-memory-columns-mean

J'ai trouvé ce document qui décrit comment récupérer les données de l'ensemble de travail pour un processus nommé : http://msdn.microsoft.com/en-us/library/76yt3c0w.aspx

System.Diagnostics.Process[] processes =
    System.Diagnostics.Process.GetProcessesByName(nomduprocessus);
System.Diagnostics.Process process = processes[0];

Cependant, cela ne mentionne rien sur la Mémoire engagée :

Quelqu'un peut-il m'aider? Paul

4voto

Jonathon Reinhart Points 40535

Il semblerait que vous vouliez utiliser GetProcessMemoryInfo. Cela remplit une structure PROCESS_MEMORY_COUNTERS.

L'élément clé de cette structure qui pourrait vous intéresser est

PagefileUsage La valeur de la charge d'engagement en octets pour ce processus. La charge d'engagement est la quantité totale de mémoire que le gestionnaire de mémoire a engagée pour un processus en cours d'exécution.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X