_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
, newState
ou 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
_doserrno
errno
_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.