Condividi tramite


_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, newStateo 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.

Vedi anche

Routine di debug
_crtDbgFlag