Condividi tramite


_recalloc_dbg

Rialloca una matrice e ne inizializza gli elementi a 0 (solo versione di debug).

Sintassi

void *_recalloc_dbg(
   void *userData,
   size_t num,
   size_t size,
   int blockType,
   const char *filename,
   int linenumber
);

Parametri

userData
Puntatore al blocco di memoria allocato precedentemente.

number
Numero di blocchi di memoria richiesto.

size
Dimensione richiesta di ciascun blocco di memoria (byte).

blockType
Tipo richiesto di blocco di memoria: _CLIENT_BLOCK o _NORMAL_BLOCK.

Per informazioni sui tipi di blocchi di allocazione e sul modo in cui vengono usati, vedere Tipi di blocchi nell'heap di debug.

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 filename parametri e linenumber sono disponibili solo quando _recalloc_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 _recalloc funzione .

Osservazioni:

_recalloc_dbg è una versione di debug della _recalloc funzione. Quando _DEBUG non è definito, ogni chiamata a _recalloc_dbg viene ridotta a una chiamata a _recalloc. Sia _recalloc che _recalloc_dbg riallocano un blocco di memoria nell'heap di base, ma _recalloc_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.

_recalloc_dbg rialloca il blocco di memoria specificato con una quantità di spazio leggermente superiore alla dimensione richiesta (number * size) che può essere maggiore o minore delle dimensioni 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. La porzione utente del blocco viene riempita con il valore 0xCD e ciascuno dei buffer di sovrascrittura viene riempito con 0xFD.

_recalloc_dbg imposta errno su ENOMEM se fallisce un'allocazione di memoria; EINVAL viene restituito se la quantità di memoria richiesta (incluso l'overhead menzionato precedentemente) 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 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
_recalloc_dbg <crtdbg.h>

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

Librerie

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

Vedi anche

Routine di debug