Différence entre calloc et malloc

Différence clé - calloc vs malloc

En programmation, il est nécessaire de stocker des données. Les données sont stockées dans la mémoire. Ces emplacements de mémoire sont appelés variables. Chaque variable a un type spécifique. Il peut s’agir d’entiers, de flottants, de doublons, de caractères, etc. Il existe également des structures de données pouvant stocker un ensemble séquentiel d’éléments de même taille et de même taille. C'est un tableau. Le programmeur doit déclarer la taille du tableau. Si le programmeur décline un tableau d'entiers pour cinq éléments, il n'est pas possible d'affecter une valeur à un index supérieur à la taille déclarée. L'allocation de mémoire est fixe et ne peut pas être modifiée au moment de l'exécution. Une autre méthode d'allocation de mémoire est l'allocation dynamique de mémoire. L'allocation dynamique de la mémoire permet d'allouer plus de mémoire si nécessaire et de la libérer si nécessaire. Le fichier d'en-tête a quatre fonctions pour l'allocation dynamique de mémoire. calloc et malloc sont deux de ces fonctions. le différence clé entre calloc et malloc est que calloc alloue la mémoire et initialise également les blocs de mémoire alloués à zéro alors que malloc alloue la mémoire mais n'initialise pas cette mémoire allouée à zéro. L'accès au contenu dans calloc donnera zéro, mais malloc donnera une valeur de déchet.

CONTENU

1. Vue d'ensemble et différence clé
2. Ce qui est calloc
3. Qu'est ce que le malloc
4. Similitudes entre calloc et malloc
5. Comparaison côte à côte - calloc vs malloc en forme tabulaire
6. Résumé

Ce qui est calloc?

L'allocation de mémoire est le processus d'attribution de mémoire pour les programmes en cours d'exécution. Parfois, il est nécessaire de changer la taille de la mémoire. Par conséquent, l'allocation dynamique de mémoire est utilisée. C'est fait en utilisant des pointeurs. Les pointeurs sont des variables de référence qui contiennent l'adresse d'une autre variable..

Figure 01: calloc et malloc

calloc signifie «allocation contiguë». Il alloue plusieurs blocs de mémoire de même taille. La syntaxe de calloc est la suivante. Il faut deux arguments. Ils sont le nombre de blocs et la taille de chaque bloc. La fonction calloc renvoie un pointeur vide. Un opérateur de transtypage est donc utilisé pour renvoyer le type de pointeur en fonction du type de données requis..

        void * calloc (size_t num, size_t size);

Référez-vous au programme C simple ci-dessous.

#comprendre

#comprendre

int main()

int ptr * = (int *) calloc (20, sizeof (int));

si (ptr == NULL)

printf («La mémoire n'est pas allouée»);

autre

printf («La mémoire est allouée»);

retourne 0;

Selon le programme ci-dessus, un bloc de mémoire contigu pouvant contenir 20 éléments est alloué. Chacun aura la taille d'un entier. Le sizeof (int) est utilisé parce que le type entier varie d'un compilateur à l'autre.

Si l'allocation de mémoire est réussie, il retournera l'adresse de base du bloc de mémoire. Cela signifie que le pointeur ptr pointe maintenant sur l'adresse de base de ce bloc de mémoire. Toutes les régions allouées sont initialisées à zéro. Il imprimera le message Mémoire allouée. Si l'allocation de mémoire échoue, le pointeur null sera renvoyé. Par conséquent, il imprimera le message La mémoire n'est pas allouée.

Qu'est ce que le malloc?

La fonction malloc est utilisée pour allouer la quantité d'octets requise en mémoire. La syntaxe pour malloc est la suivante. La taille représente la mémoire requise en octets.

        void * malloc (size_t_size);

La fonction malloc renvoie un pointeur vide, un opérateur de transtypage est utilisé pour renvoyer le type de pointeur en fonction du type de données requis..

Reportez-vous au programme C simple ci-dessous avec la fonction malloc.

#comprendre

#comprendre

int main()

int ptr * = (int *) malloc (10 * sizeof (int));

si (ptr == NULL)

printf («La mémoire n'est pas allouée»);

autre

printf («La mémoire est allouée»);

retourne 0;

Selon le programme ci-dessus, un bloc de mémoire sera alloué. Le pointeur pointe sur l'adresse de départ de la mémoire allouée. Le pointeur renvoyé est converti en un type entier. Si la mémoire est allouée, le message sera imprimé. Si la mémoire n'est pas allouée, un pointeur nul retournera. Par conséquent, la mémoire n'est pas allouée le message sera imprimé.

Quelles sont les similitudes entre calloc et malloc?

  • Ces deux fonctions sont déclarées dans le fichier d'en-tête. C'est le fichier d'en-tête de la bibliothèque standard.
  • Les deux fonctions sont utilisées pour l'allocation dynamique de mémoire.
  • Le pointeur renvoyé par calloc et malloc doit être converti dans le type spécifique.
  • En cas d'allocation de mémoire réussie, les deux fonctions renverront un pointeur avec l'adresse de base du bloc de mémoire..
  • Si l'allocation de mémoire échoue, un pointeur null sera renvoyé..

Quelle est la difference entre calloc et malloc?

calloc vs malloc

calloc est une fonction d'allocation de mémoire dynamique dans un fichier d'en-tête stdlib.h en langage C qui attribue un nombre d'octets spécifique et les initialise à zéro.. malloc est une fonction d'allocation dynamique de la mémoire dans le fichier d'en-tête stdlib.h en langage C qui attribue un nombre d'octets spécifique..
 Sens
calloc est synonyme d'allocation contiguë. malloc signifie allocation de mémoire.
Syntaxe
calloc suit une syntaxe similaire à void * calloc (size_t_num, size_t size); malloc suit une syntaxe similaire à void * malloc (size_t_size);.
 Nombre d'arguments
calloc prend deux arguments. Ils sont un nombre de blocs et la taille de chaque bloc. Malloc prend un argument. C'est un nombre d'octets.
La vitesse
calloc prend un peu plus longtemps que malloc. C’est à cause de l’étape supplémentaire d’initialisation de la mémoire allouée par zéro. malloc est plus rapide que calloc.

Résumé - calloc vs malloc

Dans l'allocation de mémoire statique telle l'utilisation de tableaux, la mémoire est fixe. Si peu d'éléments sont stockés, le reste de la mémoire est gaspillé. Cela peut également provoquer des erreurs lorsque la mémoire allouée est inférieure à la mémoire requise. Par conséquent, l'allocation dynamique de mémoire est utilisée. En langage C, calloc et malloc fournissent une allocation de mémoire dynamique. La différence entre calloc et malloc est que calloc alloue de la mémoire et initialise également à zéro les blocs de mémoire alloués, tandis que malloc alloue de la mémoire mais n'initialise pas les blocs de mémoire à zéro. Malloc prend deux arguments tandis que calloc en prend deux.

Téléchargez le PDF de calloc vs malloc

Vous pouvez télécharger la version PDF de cet article et l'utiliser à des fins hors ligne, conformément à la note de citation. Veuillez télécharger la version PDF ici: Différence entre calloc et malloc

Référence:

1. Kumar, Krishan. “Différence entre Malloc et Calloc en C.” Cs-Fundamentals.com, Cs-Fundamentals.com. Disponible ici  
2. «Allocation de mémoire dynamique en C». Wikipedia, Wikimedia Foundation, 13 janvier 2018. Disponible ici 
3. «Calloc () contre malloc ().» GeeksforGeeks, 14 juin 2017. Disponible ici