Partager via


_CrtMemDifference

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

Syntaxe

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

Paramètres

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

oldState
Pointeur vers un état antérieur de la mémoire (structure_CrtMemState ).

newState
Pointeur vers un état postérieur de la mémoire (structure_CrtMemState ).

Valeur retournée

Si la différence dans les états de mémoire est significative, _CrtMemDifference retourne TRUE. Sinon, la fonction retourne FALSE.

Notes

La _CrtMemDifference fonction compare oldState et newState stocke leurs différences dans stateDiff, qui peuvent ensuite être utilisées par l’application pour détecter les fuites de mémoire et d’autres problèmes de mémoire. Quand _DEBUG n’est pas défini, les appels à _CrtMemDifference sont supprimés lors du prétraitement.

newState et oldState doit chacun être un pointeur valide vers une _CrtMemState structure, définie dans crtdbg.h, qui _CrtMemCheckpoint a été renseignée avant l’appel à _CrtMemDifference. stateDiff doit être un pointeur vers une instance allouée au préalable de la structure _CrtMemState . Si stateDiff, newStateou oldState est NULL, le gestionnaire de paramètres non valide est appelé, comme décrit dans la validation des paramètres. Si l’exécution est autorisée à continuer, , , et est définie EINVAL sur et _sys_nerr la fonction retourne FALSE. _sys_errlist_doserrnoerrno

_CrtMemDifference compare les _CrtMemState valeurs de champ des blocs dans oldState ceux dans newState et stocke le résultat dans stateDiff. Lorsque le nombre de types de blocs alloués ou le nombre total de blocs alloués pour chaque type diffère entre les deux états de mémoire, la différence dans les états est considérée comme significative. La différence entre la quantité maximale allouée simultanément 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 d’exécution C internes (_CRT_BLOCK) ne sont pas inclus dans les opérations d’état de mémoire. La _CrtSetDbgFlag fonction peut être utilisée pour activer le bit de ces blocs dans la _CRTDBG_CHECK_CRT_DF détection des _crtDbgFlag fuites et d’autres opérations d’état de mémoire. Les blocs de mémoire libérés (_FREE_BLOCK) ne provoquent _CrtMemDifference pas le retour TRUE.

Pour plus d’informations sur les fonctions d’état du tas et sur la structure _CrtMemState , consultez Fonctions de création de rapports sur l’état du tas. Pour plus d’informations sur la façon dont les blocs de mémoire sont alloués, initialisés et gérés dans la version de débogage du tas de base, consultez les détails du tas de débogage CRT.

Spécifications

Routine En-tête requis En-tête facultatif
_CrtMemDifference <crtdbg.h> <errno.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility.

Bibliothèques : uniquement les versions de débogage des bibliothèques Runtime C.

Voir aussi

Routines de débogage
_crtDbgFlag