_aligned_recalloc_dbg
Modifica le dimensioni di un blocco di memoria allocato con _aligned_malloc
o _aligned_offset_malloc
e inizializza la memoria su 0 (solo versione di debug).
Sintassi
void * _aligned_recalloc_dbg(
void * memblock,
size_t num,
size_t size,
size_t alignment,
const char *filename,
int linenumber
);
Parametri
memblock
Puntatore al blocco di memoria corrente.
number
Numero di elementi.
size
Dimensione in byte di ogni elemento.
alignment
Valore di allineamento, che deve essere una potenza intera di 2.
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
.
Valore restituito
_aligned_recalloc_dbg
restituisce un puntatore void
al blocco di memoria riallocato (e possibilmente spostato). Il valore restituito è NULL
se la dimensione è zero e l'argomento buffer non NULL
è o se la memoria disponibile non è sufficiente per espandere il blocco fino alle dimensioni specificate. Nel primo caso il blocco originale viene liberato. Nel secondo caso il blocco originale resta invariato. Il valore restituito punta a uno spazio di archiviazione allineato in modo adeguato per l'archiviazione di qualsiasi tipo di oggetto. Per ottenere un puntatore a un tipo diverso da void
, usare un cast del tipo sul valore restituito.
Si tratta di un errore per riallocare la memoria e modificare l'allineamento di un blocco.
Osservazioni:
_aligned_recalloc_dbg
è una versione di debug della _aligned_recalloc
funzione. Quando _DEBUG
non è definito, ogni chiamata a _aligned_recalloc_dbg
viene ridotta a una chiamata a _aligned_recalloc
. Sia _aligned_recalloc
che _aligned_recalloc_dbg
riallocano un blocco di memoria nell'heap di base, ma _aligned_recalloc_dbg
supporta diverse funzionalità di debug: buffer su entrambi i lati della parte utente del blocco per testare le perdite e filename
/linenumber
informazioni per determinare l'origine delle richieste di allocazione. Il rilevamento di tipi di allocazione specifici con un parametro di tipo di blocco non è una funzionalità di debug supportata per le allocazioni allineate. Le allocazioni allineate verranno visualizzate come _NORMAL_BLOCK
tipo di blocco.
_aligned_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 spostare il blocco di memoria originale in una posizione diversa nell'heap e modificare le dimensioni del blocco di memoria. La parte utente del blocco viene riempita con il valore 0xCD e i buffer di sovrascrittura vengono riempiti con 0xFD.
_aligned_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
.
_aligned_recalloc_dbg
, inoltre, convalida i propri parametri. Se alignment
non è una potenza pari a 2, questa funzione richiama il gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, la funzione restituisce NULL
e imposta errno
su EINVAL
.
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 relative versioni di debug, vedere Eseguire il debug delle versioni delle funzioni di allocazione dell'heap.
Requisiti
Ciclo | Intestazione obbligatoria |
---|---|
_aligned_recalloc_dbg |
<crtdbg.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Librerie
Solo le versioni di debug delle librerie di runtime di C.