La fonction d'allocation de mémoire de la bibliothèque C void *calloc(size_t nitems, size_t size) alloue la mémoire demandée et renvoie un pointeur vers celle-ci.
La différence entre malloc et calloc est que malloc ne met pas la mémoire à zéro, tandis que calloc définit la mémoire allouée à zéro.
La mémoire peut être allouée de deux manières comme décrit ci-dessous -
Une fois la mémoire allouée au moment de la compilation, elle ne peut pas être modifiée pendant l'exécution. Il y aura des problèmes de mémoire insuffisante ou gaspillée.
La solution est de créer de la mémoire de manière dynamique, c'est-à-dire de créer de la mémoire en fonction des besoins de l'utilisateur lors de l'exécution du programme.
Les fonctions standard de la bibliothèque pour la gestion dynamique de la mémoire sont les suivantes : -
Cette fonction est utilisé Allouer des blocs de mémoire contigus au moment de l'exécution.
Ceci est spécialement conçu pour les tableaux.
Il renvoie un pointeur vide qui pointe vers l'adresse de base de la mémoire allouée. La syntaxe de la fonction
calloc() est la suivante -
void *calloc ( numbers of elements, size in bytes)
L'exemple suivant montre l'utilisation de la fonction calloc().
int *ptr; ptr = (int * ) calloc (500,2);
Ici, 500 blocs mémoire de taille 2 octets seront alloués consécutivement. Mémoire totale allouée = 1 000 octets.
< /p>
int *ptr; ptr = (int * ) calloc (n, sizeof (int));
Vous trouverez ci-dessous un programme C qui utilise la fonction d'allocation dynamique de mémoire Calloc pour calculer la somme des nombres pairs et impairs dans un ensemble d'éléments.
Démonstration en ligne
#include<stdio.h> #include<stdlib.h> void main(){ //Declaring variables, pointers// int i,n; int *p; int even=0,odd=0; //Declaring base address p using Calloc// p = (int * ) calloc (n, sizeof (int)); //Reading number of elements// printf("Enter the number of elements : "); scanf("%d",&n); /*Printing O/p - We have to use if statement because we have to check if memory has been successfully allocated/reserved or not*/ if (p==NULL){ printf("Memory not available"); exit(0); } //Storing elements into location using for loop// printf("The elements are : </p><p>"); for(i=0;i<n;i++){ scanf("%d",p+i); } for(i=0;i<n;i++){ if(*(p+i)%2==0){ even=even+*(p+i); } else { odd=odd+*(p+i); } } printf("The sum of even numbers is : %d</p><p>",even); printf("The sum of odd numbers is : %d</p><p>",odd); }
Lorsque le programme ci-dessus est exécuté, les résultats suivants seront produits -
Enter the number of elements : 4 The elements are : 12 56 23 10 The sum of even numbers is : 78 The sum of odd numbers is : 23
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!