Condividi tramite


_free_dbg

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

void _free_dbg( 
   void *userData,
   int blockType 
);

Parametri

  • userData
    Puntatore al blocco di memoria allocata da liberare.

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

Note

La funzione _free_dbg è una versione di debug della funzione free. Quando _DEBUG non è definito, ogni chiamata a _free_dbg viene ridotta ad una chiamata a free. Sia free che _free_dbg liberano un blocco di memoria nell'heap di base, ma _free_dbg fornisce due funzionalità di debug: la possibilità di mantenere liberi i blocchi nell'elenco collegato nell'heap per simulare condizioni di memoria insufficiente e un parametro di tipo di un blocco per liberare tipi di locazioni specifiche.

_free_dbg esegue un controllo di validità su tutti i file e i percorsi specificati di un blocco prima di eseguire l'operazione free. Non è previsto che l'applicazione fornisca queste informazioni. 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. Se viene impostato il campo di bit _CRTDBG_DELAY_FREE_MEM_DF del flag _crtDbgFlag, il blocco liberato viene riempito con un valore 0xDD, viene assegnato il tipo di blocco _FREE_BLOCK e viene mantenuto nell'elenco collegato dell'heap dei blocchi di memoria.

Se si verifica un errore nella liberazione della memoria, errno viene fornito con informazioni dal sistema operativo sulla natura dell'errore. Per ulteriori informazioni, vedere errno, _doserrno, _sys_errlist, and _sys_nerr.

Per informazioni su come i blocchi di memoria allocati, vengono inizializzati e vengono gestiti nella versione di debug dell'heap di base, vedere Informazioni dettagliate sull'heap di debug CRT. Per informazioni sui tipi di blocchi di allocazione e su come vengono utilizzati, consultare Tipi di blocchi sull'heap di debug. Per informazioni sulle differenze tra chiamare una funzione standard dell'heap e la versione di debug in una build di debug di un'applicazione, consultare Versioni di debug di funzioni di allocazione heap.

Requisiti

Routine

Intestazione obbligatoria

_free_dbg

<crtdbg.h>

Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'introduzione.

Esempio

Per un esempio su come utilizzare _free_dbg, consultare crt_dbg2.

Equivalente .NET Framework

Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma.

Vedere anche

Riferimenti

Routine di debug

_malloc_dbg