Condividi tramite


_free_dbg

Libera un blocco di memoria nell'heap (solo versione di debug).

Sintassi

void _free_dbg(
   void *userData,
   int blockType
);

Parametri

userData
Puntatore al blocco di memoria precedentemente allocata da liberare.

blockType
Tipo di blocco di memoria allocata da liberare: _CLIENT_BLOCK, _NORMAL_BLOCK o _IGNORE_BLOCK.

Osservazioni:

La _free_dbg funzione è una versione di debug della free funzione. Quando _DEBUG non è definito, ogni chiamata a _free_dbg viene ridotta a una chiamata a free. Sia free che _free_dbg liberano un blocco di memoria nell'heap di base, ma _free_dbg include due funzionalità di debug: la possibilità di mantenere i blocchi liberati nell'elenco collegato dell'heap per simulare una condizione di memoria insufficiente e un parametro del tipo di blocco per liberare specifici tipi di allocazione.

_free_dbg esegue un controllo di validità su tutti i percorsi di file e di blocchi specificati prima di eseguire prima di procedere a liberare i blocchi. L'applicazione non dovrebbe fornire queste informazioni. Quando un blocco di memoria viene liberato, gestione heap di debug controlla automaticamente l'integrità dei buffer su entrambi i lati della parte dell'utente. Genera una segnalazione errori se rileva una sovrascrittura. Se il _CRTDBG_DELAY_FREE_MEM_DF campo di bit del _crtDbgFlag flag è impostato, il blocco liberato viene riempito con il valore 0xDD, assegnato il _FREE_BLOCK tipo di blocco e mantenuto nell'elenco collegato dell'heap dei blocchi di memoria.

Se si verifica un errore nel liberare la memoria, errno viene impostato con informazioni dal sistema operativo sulla natura dell'errore. Per altre informazioni, vedereerrno, _doserrno, _sys_errliste _sys_nerr.

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. Per informazioni sui tipi di blocchi di allocazione e sul modo in cui vengono usati, vedere Tipi di blocchi nell'heap di debug. Per informazioni sulle differenze tra la chiamata di una funzione heap standard e la versione di debug, vedere Eseguire il debug delle versioni delle funzioni di allocazione dell'heap.

Requisiti

Ciclo Intestazione obbligatoria
_free_dbg <crtdbg.h>

Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).

Esempio

Per un esempio di come usare _free_dbg, vedere crt_dbg2.

Vedi anche

Routine di debug
_malloc_dbg