Affichage des statistiques de la mémoire
Mise à jour : novembre 2007
Cette rubrique s'applique à :
Édition |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
Natif uniquement |
|||
Standard |
Natif uniquement |
|||
Pro et Team |
Natif uniquement |
Légende du tableau :
Applicable |
|
Non applicable |
|
Commande ou commandes masquées par défaut. |
La fonction CMemoryState::Difference examine deux objets d'état de mémoire et détecte les objets qui n'ont pas été libérés du tas entre les états de début et de fin. Une fois que vous avez Comment : prendre des instantanés de la mémoire et que vous les comparés à l'aide de CMemoryState::Difference ; vous pouvez appeler CMemoryState::DumpStatistics pour obtenir des informations sur les objets qui n'ont pas été libérés.
Prenons l'exemple suivant :
if( diffMemState.Difference( oldMemState, newMemState ) )
{
TRACE( "Memory leaked!\n" );
diffMemState.DumpStatistics();
}
Un exemple de dump de cet exemple aura l'aspect suivant :
0 bytes in 0 Free Blocks
22 bytes in 1 Object Blocks
45 bytes in 4 Non-Object Blocks
Largest number used: 67 bytes
Total allocations: 67 bytes
Les blocs libres sont des blocs dont la fin d'allocation est différée si afxMemDF a la valeur delayFreeMemDF. Pour plus d'informations, consultez Comment : activer les diagnostics de la mémoire.
Les blocs Object ordinaires, affichés sur la deuxième ligne, restent alloués sur le tas.
Les blocs non objet incluent les tableaux et les structures alloués avec new. Dans le cas présent, quatre blocs non objet ont été alloués sur le tas, mais pas libérés.
Largest number used donne la mémoire maximale utilisée par le programme à un moment quelconque.
Total allocations donne la quantité totale de mémoire utilisée par le programme.
Voir aussi
Tâches
Comment : prendre des instantanés de la mémoire