Condividi tramite


_malloc_dbg

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

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 parametri filename e linenumber sono disponibili solo quando _malloc_dbg è stato chiamato in modo esplicito o è stata definita una costante del preprocessore _CRTDBG_MAP_ALLOC.

Valore restituito

Al termine, questa funzione restituisce un puntatore alla porzione utente del blocco di memoria allocato, chiama la nuova funzione di gestione 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 di gestione, vedere la funzione malloc.

Note

_malloc_dbg è una versione di debug della funzione malloc. 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 specificato 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 di intestazione di debug e buffer di sovrascrittura. Quando il blocco è allocato, la porzione utente del blocco viene riempita con il valore 0xCD e ciascuno 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_errlist, and _sys_nerr.

Per informazioni sulle modalità di allocazione, inizializzazione e gestione dei blocchi di memoria 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 usati, vedere Tipi di blocchi sull'heap di debug. Per informazioni sulle differenze tra chiamare una funzione standard dell'heap e la sua versione di debug nella build di debug di un'applicazione, vedere Versioni di debug di funzioni di allocazione heap.

Requisiti

Routine

Intestazione obbligatoria

_malloc_dbg

<crtdbg.h>

Per altre informazioni sulla compatibilità, vedere la sezione Compatibilità nell'introduzione.

Librerie

Solo versioni di debug delle librerie di runtime C.

Esempio

Per un esempio di uso di _malloc_dbg, vedere crt_dbg1.

Equivalente .NET Framework

Non applicabile. Per chiamare la funzione C standard, usare PInvoke. Per altre informazioni, vedere Esempi di platform invoke.

Vedere anche

Riferimenti

Routine di debug

malloc

_calloc_dbg

_calloc_dbg