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 doubles, de caractères, 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'affecter une valeur à un indice 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 de mémoire dynamique. L'allocation de mémoire dynamique 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 tandis que malloc alloue la mémoire mais n'initialise pas cette mémoire allouée à zéro. Accéder au contenu dans calloc donnera zéro, mais malloc donnera une valeur poubelle.
Qu'est-ce que 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 de mémoire dynamique est utilisée. Cela se fait à l'aide de 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, donc un opérateur de transtypage est utilisé pour renvoyer le type de pointeur en fonction du type de données requis.
voidcalloc(size_t num, size_t size);
Référez-vous au 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");
}
else{
printf("La mémoire est allouée");
}
retour 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é car le type entier varie d'un compilateur à l'autre.
Si l'allocation de mémoire est réussie, il renverra l'adresse de base du bloc de mémoire. Cela signifie que le pointeur ptr pointe maintenant vers 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, il renverra le pointeur nul. Par conséquent, il imprimera le message La mémoire n'est pas allouée.
Qu'est-ce que malloc ?
La fonction malloc est utilisée pour allouer la quantité requise d'octets en mémoire. La syntaxe de 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 transtypage est utilisé pour renvoyer le type de pointeur en fonction du type de données requis.
Référez-vous au programme C simple ci-dessous avec la fonction malloc.
inclure
inclure
int main(){
int ptr=(int) malloc (10sizeof(int));
if (ptr==NULL){
printf("La mémoire n'est pas allouée");
}
else{
printf("La mémoire est allouée");
}
retour 0;
}
Selon le programme ci-dessus, un bloc de mémoire sera alloué. Le pointeur pointe vers l'adresse de début de la mémoire allouée. Le pointeur renvoyé est converti en un type entier. Si la mémoire est allouée, il imprimera le message de mémoire allouée. 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 s'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 standard de la bibliothèque.
- Les deux fonctions sont utilisées pour l'allocation dynamique de mémoire.
- Le pointeur renvoyé par calloc et malloc doit être casté 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 nul sera retourné.
Quelle est la différence entre calloc et malloc ?
calloc contre malloc |
|
calloc est une fonction d'allocation de mémoire dynamique dans le fichier d'en-tête stdlib.h en langage C 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 fichier d'en-tête stdlib.h en langage C qui alloue un nombre spécifique d'octets. |
Signification | |
calloc signifie 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. |
Vitesse | |
calloc prend un peu plus de temps 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 contre malloc
Dans l'allocation de mémoire statique telle que 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 de mémoire dynamique 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 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écharger 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