Partager via


_CrtMemDifference

Compare deux états de mémoire et retourne leurs différences (version debug uniquement).

int _CrtMemDifference( 
   _CrtMemState *stateDiff,
   const _CrtMemState *oldState,
   const _CrtMemState *newState 
);

Paramètres

  • stateDiff
    Pointeur vers une structure d' _CrtMemState utilisée pour stocker les différences entre les deux états de mémoire (retournés).

  • oldState
    Pointeur vers un premier état de la mémoire (structure d'_CrtMemState ).

  • newState
    Pointeur vers un dernier état de la mémoire (structure d'_CrtMemState ).

Valeur de retour

Si les états de mémoire sont sensiblement différents, retourne TRUE d' _CrtMemDifference .Sinon, la fonction retourne FALSE.

Notes

La fonction d' _CrtMemDifference compare oldState et newState et stocke leurs différences dans stateDiff, qui peut ensuite être utilisé par l'application de détection des fuites de mémoire et des autres problèmes de mémoire.Lorsque _DEBUG n'est pas défini, les appels à _CrtMemDifference sont supprimés pendant le prétraitement.

newState et oldState doivent toutes être un pointeur non valide à une structure d' _CrtMemState , définie dans Crtdbg.h, qui a été terminé par _CrtMemCheckpoint avant d'appeler _CrtMemDifference.stateDiff doit être un pointeur vers une instance précédemment allouée de la structure d' _CrtMemState .si stateDiff, newState, ou oldState est NULL, le gestionnaire de paramètre non valide est appelé, comme décrit dans Validation des paramètres.Si est autorisé à l'exécution de se poursuivre, errno, _doserrno, _sys_errlist, et _sys_nerr est défini à EINVAL et la fonction retourne FALSE.

_CrtMemDifference compare les valeurs de champ d' _CrtMemState les blocs de oldState à ceux de newState et stocke le résultat dans stateDiff.Lorsque le numéro du bloc alloué de types et le nombre total de blocs alloués pour chaque type diffère entre les deux états de la mémoire, les rapports sont dits sensiblement différents.La différence entre la plus grande quantité jamais allouée immédiatement pour les deux états et la différence entre les allocations totales pour les deux états sont également stockées dans stateDiff.

Par défaut, les blocs internes runtime C (_CRT_BLOCK) ne sont pas inclus dans les opérations d'état de la mémoire.La fonction de _CrtSetDbgFlag peut être utilisée pour mettre à 1 le bit d' _CRTDBG_CHECK_CRT_DF d' _crtDbgFlag pour inclure ces blocs de la détection des fuites et d'autres opérations d'état de la mémoire.Les blocs de mémoire libérés (_FREE_BLOCK) n'entraînent pas _CrtMemDifference au retour TRUE.

Pour plus d'informations sur les fonctions d'état du tas et la structure d' _CrtMemState , consultez Fonctions de création de rapports sur l'état du tas.Pour plus d'informations sur la manière dont les blocs de mémoire sont alloués, initialisés, et gérés dans la version debug de tas de base, consultez Gestion de la mémoire et tas de débogage.

Configuration requise

routine

en-tête requis

en-tête facultatif

_CrtMemDifference

<crtdbg.h>

<errno.h>

Pour plus d'informations de compatibilité, consultez Compatibilité dans l'introduction.

bibliothèques : Versions debug de Fonctionnalités de bibliothèque CRT uniquement.

Exemple

Consultez crt_dbg1.

Équivalent .NET Framework

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de code non managé.

Voir aussi

Référence

Déboguez des routines

_crtDbgFlag