Condividi tramite


_recalloc_dbg

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

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.

  • num
    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 su come vengono usati, vedere Tipi di blocchi sull'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 parametri filename e linenumber sono disponibili solo quando _recalloc_dbgè stato chiamato in modo esplicito o è stata definita una costante del preprocessore _CRTDBG_MAP_ALLOC.

Valore restituito

Al termine, questa funzione restituisce un puntatore alla porzione utente del blocco di memoria riallocato, chiama la nuova funzione di gestione o restituisce NULL. Per una descrizione completa del comportamento di restituzione, vedere la sezione relativa alle osservazioni. Per altre informazioni su come viene usata la nuova funzione di gestione, vedere la funzione _recalloc.

Note

_recalloc_dbg è una versione di debug della funzione _recalloc. 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, come buffer presenti alle estremità della porzione utente del blocco in cui verificare la presenza di 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 (num * 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 di intestazione di debug e buffer di sovrascrittura. La riallocazione potrebbe comportare lo spostamento del blocco di memoria originale in un'altra posizione nell'heap nonché la modifica della dimensione 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, and _sys_nerr.

Per informazioni sulle modalità di allocazione, inizializzazione e gestione dei blocchi di memoria nella versione di debug dell'heap di base, vedere Informazioni dettagliate sull'heap di debug CRT. Per informazioni sulle differenze tra chiamare una funzione standard dell'heap e la sua versione di debug nella build di debug di un'applicazione, vedere Versioni di debug di funzioni di allocazione heap.

Requisiti

Routine

Intestazione obbligatoria

_recalloc_dbg

<crtdbg.h>

Per altre informazioni sulla compatibilità, vedere la sezione Compatibilità nell'introduzione.

Librerie

Solo versioni di debug delle librerie di runtime C.

Equivalente .NET Framework

Non applicabile. Per chiamare la funzione C standard, usare PInvoke. Per altre informazioni, vedere Esempi di platform invoke.

Vedere anche

Riferimenti

Routine di debug