Condividi tramite


_malloc_dbg

Alloca un blocco di memoria nell'heap con spazio aggiuntivo per un'intestazione di debug e i buffer di sovrascrittura (solo versione di debug).

Sintassi

void *_malloc_dbg(
   size_t size,
   int blockType,
   const char *filename,
   int linenumber
);

Parametri

size
Dimensione richiesta di ciascun blocco di memoria (byte).

blockType
Tipo di blocco di memoria richiesto: _CLIENT_BLOCK o _NORMAL_BLOCK.

filename
Puntatore al nome del file di origine che ha richiesto l'operazione di allocazione o NULL.

linenumber
Numero di riga nel file di origine in cui è stata richiesta l'operazione di allocazione o NULL.

I filename parametri e linenumber sono disponibili solo quando _malloc_dbg è stato chiamato in modo esplicito o la costante del _CRTDBG_MAP_ALLOC preprocessore è stata definita.

Valore restituito

Al termine, questa funzione restituisce un puntatore alla parte utente del blocco di memoria allocato, chiama la nuova funzione del gestore o restituisce NULL. Per una descrizione completa del comportamento di restituzione, vedere la sezione relativa alle osservazioni. Per altre informazioni sull'uso della nuova funzione del gestore, vedere la malloc funzione .

Osservazioni:

_malloc_dbg è una versione di debug della malloc funzione. Quando _DEBUG non è definito, ogni chiamata a _malloc_dbg viene ridotta a una chiamata a malloc. Sia malloc che _malloc_dbg allocano un blocco di memoria nell'heap di base, ma _malloc_dbg contiene diverse funzionalità di debug: buffer presenti a entrambi i lati della porzione utente del blocco in cui verificare la presenza di perdite, un parametro di tipo blocco per tenere traccia di tipi specifici di allocazioni e informazioni su filename/linenumber per determinare l'origine delle richieste di allocazione.

_malloc_dbg alloca il blocco di memoria con una quantità di spazio appena superiore a quella richiesta da size. Lo spazio aggiuntivo viene usato dal gestore dell'heap di debug per collegare i blocchi di memoria di debug e per fornire all'applicazione informazioni sull'intestazione di debug e buffer di sovrascrittura. Quando il blocco viene allocato, la parte utente del blocco viene riempita con il valore 0xCD e ognuno dei buffer di sovrascrittura viene riempito con 0xFD.

_malloc_dbg imposta errno su ENOMEM se un'allocazione di memoria ha esito negativo o se la quantità di memoria richiesta (incluso l'overhead citato in precedenza) supera _HEAP_MAXREQ. Per informazioni su questo e altri codici di errore, vedere errno, _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 le funzioni heap standard e le versioni di debug, vedere Eseguire il debug delle versioni delle funzioni di allocazione dell'heap.

Requisiti

Ciclo Intestazione obbligatoria
_malloc_dbg <crtdbg.h>

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

Librerie

Solo le versioni di debug delle librerie di runtime di C.

Esempio

Per un esempio di come usare _malloc_dbg, vedere crt_dbg1.

Vedi anche

Routine di debug
malloc
_calloc_dbg