Condividi tramite


Procedura: utilizzare l'heap di debug

Aggiornamento: novembre 2007

Le informazioni contenute in questo argomento sono valide per:

Edition

Visual Basic

C#

C++

Web Developer

Express

Argomento non applicabile Argomento non applicabile

Solo nativo

Argomento non applicabile

Standard

Argomento non applicabile Argomento non applicabile

Solo nativo

Argomento non applicabile

Pro e Team

Argomento non applicabile Argomento non applicabile

Solo nativo

Argomento non applicabile

Legenda tabella:

Argomento applicabile

Si applica

Argomento non applicabile

Non applicabile

Argomento valido ma comando nascosto per impostazione predefinita

Comando o comandi nascosti per impostazione predefinita.

Tutte le chiamate alle funzioni dell'heap, quali malloc, free, calloc, realloc, new e delete vengono risolte nelle versioni di debug di tali funzioni che operano nell'heap di debug. Quando si libera un blocco di memoria, l'heap di debug controlla automaticamente l'integrità dei buffer presenti da entrambi i lati dell'area allocata e genera un messaggio di errore se si è verificata una sovrascrittura.

Per utilizzare l'heap di debug

  • Collegare la build di debug dell'applicazione a una versione di debug della libreria di runtime del linguaggio C.

Per modificare uno più campi di bit _crtDbgFlag e creare un nuovo stato per il flag

  1. Chiamare _CrtSetDbgFlag con il parametro newFlag impostato su _CRTDBG_REPORT_FLAG (per ottenere lo stato corrente di _crtDbgFlag) e archiviare il valore restituito in una variabile temporanea.

  2. Attivare eventuali bit eseguendo un'operazione OR (simbolo | bit per bit) tra la variabile temporanea e le corrispondenti maschere di bit (rappresentate nel codice dell'applicazione da costanti manifesto).

  3. Disattivare gli altri bit effettuando un'operazione AND (simbolo & bit per bit) tra la variabile e un operatore NOT (simbolo ~ bit per bit) delle maschere di bit appropriate.

  4. Chiamare _CrtSetDbgFlag con il parametro newFlag impostato sul valore archiviato nella variabile temporanea per creare il nuovo stato di _crtDbgFlag.

Esempio

Le righe di codice riportate di seguito, ad esempio, attivano il rilevamento automatico delle perdite di memoria e disattivano il controllo dei blocchi di tipo _CRT_BLOCK:

// Get current flag
int tmpFlag = _CrtSetDbgFlag( _CRTDBG_REPORT_FLAG );

// Turn on leak-checking bit.
tmpFlag |= _CRTDBG_LEAK_CHECK_DF;

// Turn off CRT block checking bit.
tmpFlag &= ~_CRTDBG_CHECK_CRT_DF;

// Set flag to the new value.
_CrtSetDbgFlag( tmpFlag );

Vedere anche

Altre risorse

Heap di debug CRT