CMemoryState n'a pas une classe de base.
CMemoryState offre un moyen pratique pour détecter les fuites de mémoire dans votre programme. Une « fuite de mémoire » se produit lorsque la mémoire d'un objet est allouée sur le tas mais pas désallouée lorsqu'il n'est plus nécessaire. Ces fuites de mémoire peuvent éventuellement entraîner des erreurs de hors de la mémoire. Il existe plusieurs façons pour allouer et désallouer la mémoire dans votre programme:
Les diagnostics CMemoryState uniquement à détecter les fuites de mémoire causés lorsque la mémoire allouée à l'aide de l'opérateur new n'est pas désalloué à l'aide de Supprimer. Les deux autres groupes de fonctions de gestion de la mémoire sont pour les programmes non-C++ et mélanger à nouveau et Supprimer dans le même programme n'est pas recommandé. Une macro supplémentaire, DEBUG_NEW, est fournie en remplacement de l'opérateur new quand vous avez besoin de fichier et le numéro de ligne suivi des allocations de mémoire. DEBUG_NEW est utilisé chaque fois que vous utiliseriez normalement l'opérateur new.
Comme pour les autres diagnostics, les diagnostics CMemoryState sont uniquement disponibles dans les versions debug de votre programme. Une version de débogage doit avoir la constante _DEBUG définie.
Si vous croyez que votre programme a une fuite de mémoire, vous pouvez utiliser les fonctions de point de contrôle, la différenceet DumpStatistics pour découvrir la différence entre l'état de la mémoire (objets alloués) en deux points différents dans l'exécution du programme. Cette information peut être utile pour déterminer si une fonction est nettoyer tous les objets dont elle attribue.
Si tout simplement savoir où se trouve le déséquilibre dans l'allocation et la désallocation ne fournit pas suffisamment d'informations, vous pouvez utiliser la fonction DumpAllObjectsSince pour vider tous les objets alloués depuis le précédent appel à Checkpoint. Cette image montre l'ordre de l'allocation, le fichier source et la ligne où l'objet a été attribué (si vous utilisez DEBUG_NEW pour attribution) et la dérivation de l'objet, son adresse et sa taille. DumpAllObjectsSince appelle également la fonction de Dump de chaque objet fournir des informations sur son état actuel.
Pour plus d'informations sur comment utiliser CMemoryState et autres diagnostics, voir Support de débogage MFC dans le Guide du programmeur Visual C++.
&Notenbsp ; Déclarations des objets de type CMemoryState et les appels aux fonctions membres doivent être entre crochets par #if defined(_DEBUG)/#endif directives. Cela entraîne des diagnostics de la mémoire pour figurer uniquement dans les constructions de votre programme de débogage.
Membres de la classe |  ; Graphique de la hiérarchie