Partager via


calloc

Alloue un tableau dans la mémoire avec des éléments initialisés à 0.

Syntaxe

void *calloc(
   size_t number,
   size_t size
);

Paramètres

number
Nombre d'éléments.

size
Longueur en octets de chaque élément.

Valeur retournée

calloc retourne un pointeur désignant l’espace alloué. L’espace de stockage pointé par la valeur de retour est parfaitement aligné pour le stockage de n’importe quel type d’objet. Pour obtenir un pointeur vers un autre type que void, utilisez un cast de type sur la valeur de retour.

Notes

La fonction calloc alloue de l’espace de stockage pour un tableau de number éléments occupant chacun size octets. Chaque élément est initialisé à 0.

calloc définit errno sur ENOMEM si une allocation de mémoire échoue ou que la quantité de mémoire demandée dépasse _HEAP_MAXREQ. Pour plus d’informations sur ce code et d’autres codes d’erreur, consultez , , _sys_errlist_doserrnoet _sys_nerr.errno

Dans l’implémentation De Microsoft, le cas number échéant size , calloc retourne un pointeur vers un bloc alloué de taille différente de zéro. Une tentative de lecture ou d’écriture via le pointeur retourné entraîne un comportement non défini.

calloc utilise la fonction C++ _set_new_mode pour définir le nouveau mode de gestionnaire. Le nouveau mode de gestionnaire indique si, en cas d'échec, calloc doit appeler la nouvelle routine de gestionnaire, telle qu'elle est définie par _set_new_handler. Par défaut, calloc n’appelle pas la nouvelle routine de gestionnaire en cas d’échec de l’allocation de mémoire. Vous pouvez remplacer ce comportement par défaut afin que, lorsqu’il calloc ne parvient pas à allouer de la mémoire, il appelle la nouvelle routine de gestionnaire de la même façon que l’opérateur new lorsqu’il échoue pour la même raison. Pour remplacer la valeur par défaut, appelez

_set_new_mode(1);

début dans votre programme ou lien avec NEWMODE.OBJ (voir options de lien).

Lorsque l’application est liée à une version de débogage des bibliothèques runtime C, calloc la résolution est _calloc_dbg. Pour plus d’informations sur la gestion du tas pendant le processus de débogage, consultez le tas de débogage CRT.

calloc est marqué __declspec(noalias) et __declspec(restrict), ce qui signifie que la fonction est garantie de ne pas modifier les variables globales et que le pointeur retourné n’est pas alias. Pour plus d’informations, consultez noalias et restrict.

Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.

Spécifications

Routine En-tête requis
calloc <stdlib.h> et <malloc.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility.

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 );
}
Allocated 40 long integers

Voir aussi

Allocation de mémoire
free
malloc
realloc