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.
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é
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.
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.
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. |
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.
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
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