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