Condividi tramite


_aligned_offset_realloc_dbg

Modifica le dimensioni di un blocco di memoria allocato con _aligned_malloc o _aligned_offset_malloc (solo versione di debug).

Sintassi

void * _aligned_offset_realloc_dbg(
   void *memblock,
   size_t size,
   size_t alignment,
   size_t offset,
   const char *filename,
   int linenumber
);

Parametri

memblock
Puntatore al blocco di memoria corrente.

size
Dimensione dell'allocazione di memoria.

alignment
Valore di allineamento, che deve essere una potenza intera di 2.

offset
Offset nell'allocazione di memoria per imporre l'allineamento.

filename
Puntatore al nome del file di origine che ha richiesto l'operazione aligned_offset_realloc o NULL.

linenumber
Numero di riga nel file di origine in cui è stata richiesta l'operazione aligned_offset_realloc o NULL.

Valore restituito

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

Osservazioni:

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

Analogamente _aligned_offset_malloca , _aligned_offset_realloc_dbg consente l'allineamento di una struttura in corrispondenza di un offset all'interno della struttura.

_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 spostare il blocco di memoria originale in una posizione diversa nell'heap e modificare anche le dimensioni del blocco di memoria. Se il blocco di memoria viene spostato, i contenuti del blocco originale verranno sovrascritti.

La funzione imposta errno su ENOMEM se l'allocazione di memoria non riesce o se la dimensione richiesta è maggiore di _HEAP_MAXREQ. Per altre informazioni su errno, vedere errno, _doserrno, _sys_errliste _sys_nerr. _aligned_offset_realloc_dbg, inoltre, convalida i propri parametri. Se alignment non è una potenza di 2 o se offset è diverso da zero e maggiore o uguale a size, 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_offset_realloc_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