_CrtMemDifference
Confronta due stati della memoria e restituisce le differenze (solo versione di debug).
Sintassi
int _CrtMemDifference(
_CrtMemState *stateDiff,
const _CrtMemState *oldState,
const _CrtMemState *newState
);
Parametri
stateDiff
Puntatore a una struttura _CrtMemState
usata per archiviare la differenza tra due stati della memoria (elemento restituito).
oldState
Puntatore a uno stato precedente della memoria (struttura_CrtMemState
).
newState
Puntatore a uno stato successivo della memoria (struttura_CrtMemState
).
Valore restituito
Se la differenza negli stati di memoria è significativa, _CrtMemDifference
restituisce TRUE
. In caso contrario, la funzione restituisce FALSE
.
Osservazioni:
La _CrtMemDifference
funzione confronta e newState
archivia le oldState
differenze in stateDiff
, che possono quindi essere usate dall'app per rilevare perdite di memoria e altri problemi di memoria. Quando _DEBUG
non è definito, le chiamate a _CrtMemDifference
vengono rimosse durante la pre-elaborazione.
newState
e oldState
devono essere un puntatore valido a una _CrtMemState
struttura, definita in crtdbg.h
, che _CrtMemCheckpoint
è stata compilata prima della chiamata a _CrtMemDifference
. stateDiff
deve essere un puntatore a un'istanza precedentemente allocata della struttura _CrtMemState
. Se stateDiff
, newState
o oldState
è NULL
, viene richiamato il gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, errno
, _doserrno
_sys_errlist
, e è impostata su EINVAL
e _sys_nerr
la funzione restituisce FALSE
.
_CrtMemDifference
confronta i _CrtMemState
valori di campo dei blocchi in con quelli in oldState
newState
e archivia il risultato in stateDiff
. Quando il numero di tipi di blocchi allocati o il numero totale di blocchi allocati per ogni tipo differisce tra i due stati di memoria, la differenza negli stati viene considerata significativa. La differenza tra la più grande quantità allocata contemporaneamente per i due stati e la differenza tra le allocazioni totali per i due stati vengono archiviate anche in stateDiff
.
Per impostazione predefinita, i blocchi di runtime C interni (_CRT_BLOCK
) non sono inclusi nelle operazioni sullo stato della memoria. La _CrtSetDbgFlag
funzione può essere usata per attivare il _CRTDBG_CHECK_CRT_DF
bit di per includere questi blocchi nel rilevamento delle perdite e in altre operazioni sullo stato della _crtDbgFlag
memoria. I blocchi di memoria liberati (_FREE_BLOCK
) non restituiscono _CrtMemDifference
TRUE
.
Per altre informazioni sulle funzioni di stato dell'heap e sulla _CrtMemState
struttura, vedere Funzioni di creazione di report dello stato heap. Per informazioni sulla modalità di allocazione, inizializzazione e gestione dei blocchi di memoria nella versione di debug dell'heap di base, vedere Dettagli dell'heap di debug CRT.
Requisiti
Ciclo | Intestazione obbligatoria | Intestazione facoltativa |
---|---|---|
_CrtMemDifference |
<crtdbg.h> |
<errno.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Librerie: esegue il debug solo delle versioni delle librerie di runtime C.