Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

malloc () vs calloc ():différences clés expliquées avec des exemples

Avant d'apprendre la différence entre malloc et calloc, apprenons-

Qu'est-ce que l'allocation de mémoire dynamique ?

L'allocation de mémoire dynamique est un processus d'allocation de mémoire au moment de l'exécution. Il existe quatre routines de bibliothèque, calloc(), free(), realloc() et malloc() qui peuvent être utilisées pour allouer de la mémoire et la libérer pendant l'exécution du programme. Ces routines sont définies dans le fichier d'en-tête appelé stdlib.h.

Qu'est-ce que malloc() ?

C'est une fonction qui permet d'allouer dynamiquement un bloc de mémoire. Il réserve un espace mémoire de taille spécifiée et renvoie le pointeur nul pointant vers l'emplacement de la mémoire.

Le pointeur renvoyé est généralement de type void. Cela signifie que nous pouvons attribuer une fonction malloc à n'importe quel pointeur. La forme complète de malloc est l'allocation de mémoire.

Dans ce didacticiel, vous apprendrez :

Qu'est-ce que calloc() ?

La fonction Calloc() est utilisée pour allouer plusieurs blocs de mémoire. Il s'agit d'une fonction d'allocation de mémoire dynamique utilisée pour allouer de la mémoire à des structures de données complexes telles que des tableaux et des structures. Si cette fonction ne parvient pas à allouer suffisamment d'espace comme spécifié, elle renvoie un pointeur nul. La forme complète de la fonction calloc est l'allocation contiguë.

Pourquoi utiliser malloc() ?

Voici les raisons d'utiliser malloc()

Pourquoi utiliser calloc() ?

Voici les raisons d'utiliser calloc()

Syntaxe de malloc()

Voici une syntaxe de malloc()

ptr = (cast_type *) malloc (byte_size);

Dans la syntaxe ci-dessus, ptr est un pointeur de cast_type. La fonction malloc renvoie un pointeur vers la mémoire allouée de byte_size.

Example: ptr = (int *) malloc (50)

Lorsque cette instruction est exécutée avec succès, un espace mémoire de 50 octets est réservé. L'adresse du premier octet de l'espace réservé est affectée au pointeur "ptr" de type int.

Syntaxe de calloc()

Voici une syntaxe de malloc()

ptr = (cast_type *) calloc (n, size);

La syntaxe ci-dessus permet d'allouer n blocs mémoire de même taille. Une fois l'espace mémoire alloué, tous les octets sont initialisés à zéro. Le pointeur, qui se trouve actuellement sur le premier octet de l'espace mémoire alloué, est renvoyé.

Exemple de malloc() en C

Dans le code ci-dessous, sizeof(*ptr) est utilisé pour allouer un bloc mémoire de 15 entiers. Dans l'instruction printf, nous trouvons la valeur du 6ème entier.

#include<stdlib.h>
#include<stdio.h>
int main(){
int *ptr;
ptr = malloc(15 * sizeof(*ptr)); 
    if (ptr != NULL) {
      *(ptr + 5) = 480; 
      printf("Value of the 6th integer is %d",*(ptr + 5));
    }
}

Sortie :

La valeur du 6ème entier est 480

Exemple de calloc() en C

Le programme en langage C ci-dessous calcule la somme des dix premiers termes. Si la valeur du pointeur est nulle, alors l'espace mémoire ne sera pas alloué.

La boucle For est utilisée pour itérer la valeur d'une variable "i" et imprimer la somme. Enfin, la fonction free est utilisée pour libérer le pointeur.

#include <stdio.h>
#include <stdlib.h>
    int main() {
        int i, * ptr, sum = 0;
        ptr = calloc(10, sizeof(int));
        if (ptr == NULL) {
            printf("Error! memory not allocated.");
            exit(0);
        }
        printf("Building and calculating the sequence sum of the first 10 terms \n");
        for (i = 0; i < 10; ++i) { * (ptr + i) = i;
            sum += * (ptr + i);
        }
        printf("Sum = %d", sum);
        free(ptr);
        return 0;
    }

Sortie :

Construire et calculer la suite somme des 10 premiers termes n Somme =45

Différence entre calloc() et malloc()

Voici une différence importante entre malloc() et calloc() :

malloc() calloc() La fonction Malloc() créera un seul bloc de mémoire de la taille spécifiée par l'utilisateur. La fonction Calloc() peut affecter plusieurs blocs de mémoire pour une variable. La fonction Malloc contient une valeur parasite. Le bloc de mémoire alloué par une fonction calloc est toujours initialisé à zéro. Le nombre d'arguments est 1. Le nombre d'arguments est 2. Calloc est plus lent que malloc. Malloc est plus rapide que calloc. (). L'efficacité temporelle est inférieure à malloc(). La fonction Malloc() renvoie uniquement l'adresse de départ et ne la rend pas nulle. Avant d'attribuer l'adresse, la fonction Calloc() renvoie l'adresse de départ et la rend nulle. Elle n'effectue pas d'initialisation de la mémoire. Il effectue l'initialisation de la mémoire.

DIFFÉRENCES CLÉS :


Langue C

  1. Expressions, instructions et blocs C# (avec exemples)
  2. Boucle do…while C++ avec exemples
  3. Pointeurs C++ avec exemples
  4. Type de données Char C++ avec exemples
  5. Surcharge d'opérateur C++ avec des exemples
  6. Fonctions C++ avec exemples de programmes
  7. Tutoriel sur les collections C # avec des exemples
  8. Différence entre while et do-while :expliquée avec des exemples
  9. Fonction calloc() dans la bibliothèque C avec l'EXEMPLE de programme