Différence entre calloc et malloc

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. Ils peuvent être des entiers, des flotteurs, des doubles, des personnages, etc. Il existe également des structures de données qui peuvent stocker une collection séquentielle de taille fixe d'éléments du même type. C'est un tableau. Le programmeur doit déclarer la taille du tableau. Si le programmeur déclare un tableau d'entiers pour cinq éléments, il n'est pas possible d'attribuer une valeur à un index supérieur à la taille déclarée. L'allocation de mémoire est fixe, et elle ne peut pas être modifiée au moment de l'exécution. Une autre méthode d'allocation de mémoire est l'allocation de mémoire dynamique. L'allocation de mémoire dynamique aide à allouer plus de mémoire si nécessaire et à libérer si nécessaire. Le fichier d'en-tête a quatre fonctions pour l'allocation de mémoire dynamique. 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 tandis que Malloc alloue la mémoire mais n'initialise pas cette mémoire allouée à zéro. L'accès au contenu de Calloc donnera zéro, mais Malloc donnera une valeur de déchets.

CONTENU

1. Aperçu et différence clé
2. Qu'est-ce que Calloc
3. Qu'est-ce que Malloc
4. Similitudes entre calloc et salloc
5. Comparaison côte à côte - Calloc vs Malloc sous forme tabulaire
6. Résumé

Qu'est-ce que Calloc?

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

Figure 01: Calloc et Malloc

Calloc signifie «allocation contigu». Il attribue plusieurs blocs de mémoire avec la même taille. La syntaxe pour 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, donc un opérateur de distribution est utilisé pour retourner le type de pointeur en fonction du type de données requis.

        void * calloc (size_t num, size_t size);

Référer le programme C simple ci-dessous.

#inclure

#inclure

int main()

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

if (ptr == null)

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

autre

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

retour 0;

Selon le programme ci-dessus, un bloc de mémoire contigu qui peut contenir 20 éléments est alloué. Chacun aura la taille d'un entier. La taille de (int) est utilisée car le type entier varie d'un compilateur à un compilateur.

Si l'attribution de la mémoire est réussie, elle renverra l'adresse de base du bloc de mémoire. Cela signifie que Pointer PTR pointe maintenant vers l'adresse de base de ce bloc de mémoire. Toutes les régions allouées sont initialisées aux zéros.  Il imprimera le message de mémoire alloué. Si l'attribution de la mémoire échoue, elle renverra le pointeur nul. Par conséquent, il imprimera la mémoire n'est pas allouée au message.

Qu'est-ce que Malloc?

La fonction malloc est utilisée pour allouer la quantité requise d'octets 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, donc un opérateur de distribution est utilisé pour retourner le type de pointeur en fonction du type de données requis.

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

#inclure

#inclure

int main()

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

if (ptr == null)

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

autre

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

retour 0;

Selon le programme ci-dessus, le bloc de mémoire sera alloué. Le pointeur pointe vers l'adresse de départ de la mémoire allouée. Le pointeur retourné est converti en type entier. Si la mémoire est allouée, il imprimera la mémoire est allouée par message. Si la mémoire n'est pas allouée, un pointeur nul revient. Par conséquent, la mémoire n'est pas allouée que le message imprimera.

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 bibliothèque standard.
  • Les deux fonctions sont utilisées pour l'allocation de mémoire dynamique.
  • Le pointeur renvoyé par Calloc et Malloc doit être jeté dans le type spécifique.
  • Dans une allocation de mémoire réussie, les deux fonctions renverront un pointeur avec l'adresse de base du bloc de mémoire.
  • Si l'attribution de la mémoire est infructueuse, un pointeur nul sera retourné.

Quelle est la différence entre calloc et malloc?

Calloc vs Malloc

calloc est une fonction d'allocation de mémoire dynamique dans le langage C stdlib.Fichier d'en-tête H qui alloue un nombre spécifique d'octets et les initialise à zéro. Malloc est une fonction d'allocation de mémoire dynamique dans le langage c stdlib.Fichier d'en-tête H qui alloue un nombre spécifique d'octets.
 Signification
Calloc signifie une allocation contiguë. Malloc signifie une 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. Ce sont un certain nombre de blocs et de taille de chaque bloc. malloc prend un argument. C'est un certain nombre d'octets.
Vitesse
Calloc prend un peu plus de temps que Malloc. C'est à cause de l'étape supplémentaire de l'initialisation de la mémoire allouée par zéro. malloc est plus rapide que calloc.

Résumé - Calloc vs Malloc

Dans une allocation de mémoire statique tels que nous à l'aide de tableaux, la mémoire est fixe. Si peu d'éléments sont stockés, alors le reste de la mémoire est gaspillé. Il peut également provoquer des erreurs lorsque la mémoire allouée est petite que la mémoire requise. Par conséquent, une allocation de mémoire dynamique est utilisée. En langue C, Calloc et Malloc fournissent une allocation de mémoire dynamique.  La différence entre Calloc et Malloc est que Calloc alloue la mémoire et initialise également les blocs de mémoire alloués à zéro tandis que Malloc alloue la mémoire mais n'initialise pas les blocs de mémoire à zéro. Malloc prend deux arguments tandis que Calloc prend deux arguments.

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 selon 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-Fondamentals.com, CS-Fundamentals.com. Disponible ici  
2.«C allocation de mémoire dynamique C.»Wikipedia, Wikimedia Foundation, 13 janvier. 2018. Disponible ici 
3.«Calloc () contre Malloc ().”Geeksforgeeks, 14 juin 2017. Disponible ici