_realloc_dbg
Ridistribuisce un blocco di memoria specificato nell'heap spostando e/o ridimensionando il blocco (solo versione di debug).
void *_realloc_dbg(
void *userData,
size_t newSize,
int blockType,
const char *filename,
int linenumber
);
Parametri
userData
Puntatore al blocco di memoria allocato precedentemente.newSize
Nuova dimensione richiesta dal blocco riallocato (in byte).blockType
Tipo richiesto per il blocco ridistribuito: _CLIENT_BLOCK o _NORMAL_BLOCK.filename
Puntatore al nome del file di origine che ha richiesto l'operazione realloc o NULL.linenumber
Numero di riga del codice sorgente in cui è stata richiesta l'operazione realloc o NULL.
I parametri linenumber filename sono disponibili solo quando _realloc_dbg è stato chiamato in modo esplicito o è stata definita una costante del preprocessore _CRTDBG_MAP_ALLOC.
Valore restituito
Al termine, questa funzione restituisce all'utente un puntatore del blocco di memoria riallocato, chiama la nuova funzione di gestione, o restituisce NULL. Per una descrizione completa del comportamento di ritorno, consultare la sezione relativa alle osservazioni. Per ulteriori informazioni su come la nuova funzione di gestione viene utilizzata, consultare la funzione realloc.
Note
_realloc_dbg è una versione di debug della funzione realloc. Quando _DEBUG non è definito, ogni chiamata a _realloc_dbg viene ridotta ad una chiamata a realloc. Sia realloc che _realloc_dbg riallocano un blocco di memoria nell'heap di base, ma _realloc_dbg contiene diverse funzionalità di debug: buffer presenti da entrambi i lati della parte del blocco da verificare per le perdite, un parametro di tipo del blocco per registrare i tipi specifici di allocazioni e informazioni sul filename/linenumber per determinare l'origine delle richieste di allocazione.
_realloc_dbg rialloca il blocco di memoria specificato con più spazio rispetto a newSize richiesto. newSize potrebbe essere maggiore o minore delle dimensioni del blocco di memoria allocata. Lo spazio aggiuntivo viene utilizzato dal gestore 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. La riallocazione potrebbe comportare lo spostamento del blocco di memoria originale in un'altra posizione nell'heap nonché modificare le dimensioni del blocco di memoria. Se il blocco di memoria viene spostato, il contenuto del blocco originale viene sovrascritto.
_realloc_dbg imposta errno a ENOMEM se fallisce un'allocazione di memoria o se la quantità di memoria necessaria (incluso il sovraccarico menzionato precedentemente) supera _HEAP_MAXREQ. Per informazioni su questo e altri codici di errore, 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 |
---|---|
_realloc_dbg |
<crtdbg.h> |
Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'introduzione.
Librerie
Solo versioni di debug di Librerie di runtime C.
Esempio
Vedere l'esempio in _msize_dbg.
Equivalente .NET Framework
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma.