Partager via


calloc

Alloue un tableau en mémoire avec les éléments initialisés à 0.

void *calloc( 
   size_t num,
   size_t size 
);

Paramètres

  • num
    Nombre d'éléments

  • size
    Longueur en octets de chaque élément.

Valeur de retour

calloc retourne un pointeur vers l'espace alloué. Les valeur de retour pointent vers un espace de stockage, qui est garanti d'être aligné correctement pour le stockage de n'importe quel type d'objet. Pour obtenir un pointeur sur un type autre qu'un void, utilisez un cast de type sur la valeur de retour.

Notes

La fonction calloc alloue de l'espace de stockage pour un tableau d'éléments de num, chacune size d'octets de longueur. Chaque élément est initialisée à 0.

calloc affecte à errno la valeur ENOMEM si une allocation de mémoire échoue ou si la quantité de mémoire demandée dépasse _HEAP_MAXREQ. Pour plus d'informations sur ceci et sur les codes d'erreurs, consultez errno, _doserrno, _sys_errlist et _sys_nerr.

calloc appelle malloc_set_new_mode pour utiliser la fonction C++ pour définir le nouveau mode gestionnaire. Le nouveau mode de gestionnaire indique si, en cas de échec, malloc doit appeler la nouvelle routine du gestionnaire comme définit par _set_new_handler. Par défaut, malloc n'appelle pas la nouvelle routine de gestionnaire en cas de défaillance pour allouer de la mémoire. Vous pouvez substituer ce comportement par défaut afin que, lorsque calloc ne réussit pas à allouer la mémoire, malloc appelle la nouvelle routine de gestionnaire de la même manière que l'opérateur new lorsqu'il échoue pour la même raison. Pour substituer la valeur par défaut, appelez

_set_new_mode(1)

tôt dans votre programme, ou créez un lien avec NEWMODE.OBJ (consultez Options de lien).

Lorsque l'application est liée à une version debug des bibliothèques Runtime C, calloc est résolu en _calloc_dbg. Pour plus d'informations sur la gestion du tas pendant le processus de débogage, consultez The CRT Debug Heap.

calloc est marqué __declspec(noalias) et __declspec(restrict) ; cela signifie que la fonction ne modifiera pas de variables globales et que le pointeur retourné n'est pas sous la forme d'un alias. Pour plus d'informations, consultez noalias et restrict.

Configuration requise

Routine

En-tête requis

calloc

<stdlib.h> et <malloc.h>

Pour plus d'informations sur la compatibilité, consultez Compatibilité dans l'introduction.

Exemple

// 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 );
}
  

Équivalent .NET Framework

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme.

Voir aussi

Référence

Allocation de mémoire

libre

malloc

realloc