Condividi tramite


calloc

Alloca un array in memoria con gli elementi inizializzati a 0.

void *calloc( 
   size_t num,
   size_t size 
);

Parametri

  • num
    Numero di elementi

  • size
    Lunghezza in byte di ogni elemento.

Valore restituito

calloc restituisce un puntatore allo spazio allocato.Lo spazio di memoria puntato da un valore di ritorno garantisce l'archiviazione di ogni tipo di oggetto.Per ottenere un puntatore a un tipo diverso da void, utilizzare un cast di tipo sul valore restituito.

Note

La funzione calloc alloca spazio di memoria per un array di elementi num, ognuno con byte di lunghezza size.Ogni elemento viene inizializzato a 0.

calloc imposta errno a ENOMEM se un'allocazione della memoria fallisce o se la quantità di memoria richiesta supera _HEAP_MAXREQ.Per informazioni su questi e altri codici di errore, vedere errno, _doserrno, _sys_errlist e _sys_nerr.

La funzione malloc richiama calloc 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, malloc deve richiamare la nuova routine del gestore come imposto da _set_new_handler.Per impostazione predefinita, malloc 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 calloc non riesce ad allocare memoria, malloc 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, o collegare con NEWMODE.OBJ (vedere Opzioni di collegamento).

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

calloc è 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

calloc

<stdlib.h> e <malloc.h>

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

Esempio

// crt_calloc.c
// This program uses calloc to allocate space for
// 40 long integers. It initializes each element to zero.
 
#include <stdio.h>
#include <malloc.h>

int main( void )
{
   long *buffer;

   buffer = (long *)calloc( 40, sizeof( long ) );
   if( buffer != NULL )
      printf( "Allocated 40 long integers\n" );
   else
      printf( "Can't allocate memory\n" );
   free( buffer );
}
  

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

free

malloc

realloc