Condividi tramite


_aligned_offset_recalloc_dbg

Modifica la dimensione di un blocco di memoria allocato mediante _aligned_malloc o _aligned_offset_malloc e inizializza la memoria su 0 (solo versione di debug).

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

Parametri

  • [in] memblock
    Puntatore al blocco di memoria corrente.

  • [in] num
    Numero di elementi.

  • [in] size
    Lunghezza in byte di ogni elemento.

  • [in] alignment
    Valore di allineamento, che deve essere una potenza intera di 2.

  • [in] offset
    Offset nell'allocazione di memoria per imporre l'allineamento.

  • [in] filename
    Puntatore al nome del file di origine che ha richiesto l'operazione realloc oppure NULL.

  • [in] linenumber
    Numero di riga nel file di origine in cui è stata richiesta l'operazione realloc oppure NULL.

Valore restituito

_aligned_offset_recalloc_dbg restituisce un puntatore void al blocco di memoria riallocato (e possibilmente spostato). Il valore restituito è NULL se la dimensione è pari a zero e l'argomento relativo al buffer non è NULL o se non è disponibile memoria sufficiente per espandere il blocco alla dimensione specificata. 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 che garantisce il corretto allineamento 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.

Note

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

_aligned_offset_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 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. 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 (num * size) è maggiore di _HEAP_MAXREQ. Per altre informazioni su errno, vedere errno, _doserrno, _sys_errlist, and _sys_nerr. _aligned_offset_recalloc_dbg, inoltre, convalida i propri parametri. Se alignment non è una potenza di 2 o se offset è maggiore o uguale alla dimensione richiesta e diverso da zero, la 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 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 sui tipi di blocchi di allocazione e su come vengono usati, vedere Tipi di blocchi sull'heap di debug. 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

_aligned_offset_recalloc_dbg

<malloc.h>

Equivalente .NET Framework

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

Vedere anche

Riferimenti

Allineamento dati