differenze
Alloca un blocco di memoria nell'heap con spazio aggiuntivo per un'intestazione di debug e sovrascrivono i buffer (versione di debug solo).
void *_malloc_dbg(
size_t size,
int blockType,
const char *filename,
int linenumber
);
Parametri
size
Dimensione richiesta di blocco di memoria (in byte).blockType
Tipo richiesto del blocco di memoria: _CLIENT_BLOCK o _NORMAL_BLOCK.filename
Puntatore al nome del file di origine che ha richiesto l'operazione o NULL di allocazione.linenumber
Numero di riga nel file di origine in cui l'operazione di allocazione è richiesta o NULL.
filename e linenumber i parametri sono disponibili solo quando _malloc_dbg è stato chiamato in modo esplicito o _CRTDBG_MAP_ALLOC la costante del preprocessore è stata definita.
Valore restituito
Al termine, questa funzione restituisce un puntatore all'utente del blocco di memoria allocata, chiama la nuova funzione di gestione, o restituisce NULL.Per una descrizione completa del comportamento di ritorno, vedere la sezione relativa alle osservazioni.Per ulteriori informazioni su come la nuova funzione di gestione viene utilizzata, vedere report funzione.
Note
_malloc_dbg è una versione di debug di report funzione.quando _DEBUG non è definita, ogni chiamata a _malloc_dbg è stato ridotto a una chiamata a malloc.entrambi malloc e _malloc_dbg allocare un blocco di memoria nell'heap di base, ma _malloc_dbg offre numerose funzionalità di debug: buffer presenti da entrambi i lati della parte dell'utente di blocco da verifica delle perdite, un parametro di tipo blocco per tenere traccia dei tipi specifici di allocazione e filenameolinenumber informazioni per determinare l'origine delle richieste di allocazione.
_malloc_dbg alloca il blocco di memoria con leggermente più spazio rispetto richiesto size.Lo spazio aggiuntivo viene utilizzato dall'amministratore dell'heap di debug per collegare i blocchi di memoria di debug e per fornire l'applicazione con informazioni di intestazione di debug e sovrascrivere i buffer.Quando il blocco è allocato, la parte del blocco viene riempita con valore 0xCD e ciascuno dei buffer di sovrascrivere viene inserito il valore 0xFD.
_malloc_dbg set errno in ENOMEM se allocazione di memoria non riesce o se la quantità di memoria necessaria (sovraccarico inclusi accennato in precedenza) supera _HEAP_MAXREQ.Per informazioni su questo e altri codici di errore, vedere errno, _doserrno, _sys_errlist e _sys_nerr.
Per informazioni su come i blocchi di memoria vengono allocati, inizializzati e vengono gestiti nella versione di debug dell'heap di base, vedere Gestione della memoria e heap di debug.
Per informazioni sui tipi di blocchi di allocazione e come vengono utilizzati, vedere Tipi di blocchi sull'heap di debug.
Requisiti
routine |
Intestazione di associazione |
---|---|
_malloc_dbg |
<crtdbg.h> |
Per ulteriori informazioni sulla compatibilità, vedere compatibilità nell'introduzione.
Librerie
versioni di debug di Librerie di runtime del linguaggio C solo.
Esempio
Per un esempio di utilizzo _malloc_dbg, vedere crt_dbg1.
Equivalente .NET Framework
Non applicabile. Per chiamare la funzione c standard, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di pinvoke.