_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_errlist
e _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
.