_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_errlist
e _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
.