Condividi tramite


_realloc_dbg

Rialloca un blocco specificato di memoria nell'heap spostando e/o ridimensionando il blocco (solo versione di debug).

Sintassi

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
Dimensioni richieste per il blocco riallocato (byte).

blockType
Tipo richiesto per il blocco riallocato: _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 nel file di origine in cui è stata richiesta l'operazione realloc o NULL.

I filename parametri e linenumber sono disponibili solo quando _realloc_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 riallocata, chiama la nuova funzione del gestore oppure 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 realloc funzione .

Osservazioni:

_realloc_dbg è una versione di debug della realloc funzione. Quando _DEBUG non è definito, ogni chiamata a _realloc_dbg viene ridotta a 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 a 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 su filename/linenumber per determinare l'origine delle richieste di allocazione.

_realloc_dbg rialloca il blocco di memoria specificato con una quantità di spazio appena superiore a quella richiesta da newSize. newSize potrebbe essere maggiore o minore della dimensione del blocco di memoria allocato in origine. 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. La riallocazione potrebbe comportare lo spostamento del blocco di memoria originale in una posizione diversa nell'heap e la modifica delle dimensioni del blocco di memoria. Se il blocco di memoria viene spostato, i contenuti del blocco originale verranno sovrascritti.

_realloc_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
_realloc_dbg <crtdbg.h>

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

Librerie

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

Esempio

Vedere l'esempio nell'articolo _msize_dbg .

Vedi anche

Routine di debug
_malloc_dbg