Condividi tramite


_recalloc

Combinazione di realloc e calloc. Rialloca un array in memoria e inizializza gli elementi a 0.

void *_recalloc( 
   void *memblock
   size_t num,
   size_t size 
);

Parametri

  • memblock
    Puntatore al blocco di memoria allocato precedentemente.

  • num
    Numero di elementi

  • size
    Lunghezza in byte di ogni elemento.

Valore restituito

_recalloc restituisce un puntatore a void (ed eventualmente spostato) al blocco di memoria riallocato.

Se non è disponibile memoria sufficiente per espandere il blocco alla dimensione specificata, il blocco originale rimane invariato e viene NULL.

Se la dimensione richiesta è zero, il blocco puntato da memblock viene liberato; il valore restituito è NULLe memblock punta al blocco liberato.

I valore restituito punta ad uno spazio di memoria che garantisce l'allineamento adeguato per l'archiviazione di qualsiasi tipo di oggetto. Per ottenere un puntatore a un tipo diverso da void, utilizzare un cast di tipo sul valore restituito.

Note

La funzione _recalloc modifica la dimensione di un blocco di memoria allocata. Il parametro memblock punta all'inizio del blocco di memoria. Se memblock è NULL, _recalloc si comporta allo stesso modo di calloc e assegna un nuovo blocco di num * byte size. Ogni elemento viene inizializzato a 0. Se memblock non è NULL, deve essere un puntatore restituito da una chiamata precedente a calloc, a malloc, o a realloc.

Poiché il nuovo blocco può trovarsi in una nuova posizione di memoria, il puntatore restituito da _recalloc non è detto che sia lo stesso puntatore passato tramite il parametro memblock.

_recalloc imposta errno a ENOMEM se l'allocazione della memoria non riesce o se la quantità di memoria richiesta supera _HEAP_MAXREQ. Per informazioni su questi e altri codici di errore, vedere errno, _doserrno, _sys_errlist, and _sys_nerr.

La funzione realloc richiama recalloc per utilizzare la funzione C++ _set_new_mode per impostare la nuova modalità di gestione. La nuova modalità del gestore indica che, in caso di errore, realloc deve richiamare la nuova routine del gestore come imposto da _set_new_handler. Per impostazione predefinita, realloc non richiama la nuova routine di gestione in caso di errore nell'allocare memoria. È possibile eseguire l'override di questo comportamento predefinito in modo che, quando _recalloc non riesce ad allocare memoria, realloc richiami la nuova routine del gestore allo stesso modo di come accade con l'operatore new quando si verifica il medesimo errore. Per eseguire l'override del comportamento predefinito, chiamare

_set_new_mode(1)

all'inizio del programma programma o collegare con NEWMODE.OBJ.

Quando l'applicazione viene collegata a una versione di debug delle librerie di runtime del linguaggio C,recalloc viene identificata come _recalloc_dbg. Per ulteriori informazioni su come viene gestito l'heap durante il processo di debug, vedere L'heap di debug CRT.

_recalloc è contrassegnata in __declspec(noalias) e __declspec(restrict), pertanto la funzione garantisce che le variabili globali non vengono modificate, e che il puntatore restituito è già utilizzato. Per ulteriori informazioni, vedere noalias e limiti.

Requisiti

Routine

Intestazione obbligatoria

_recalloc

<stdlib.h> e <malloc.h>

Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'introduzione.

Equivalente .NET Framework

Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma.

Vedere anche

Riferimenti

Allocazione di memoria

_recalloc_dbg

_aligned_recalloc

_aligned_offset_recalloc

disponibili

Concetti

Opzioni collegamento