En programmation C, lorsque nous exécutons un programme, il occupe une certaine mémoire sur le système. Si nous utilisons la mémoire statique, nous devons attribuer un bloc de mémoire fixe du système, puis après l'exécution du programme, deux scénarios peuvent se produire; Le programme aura besoin d'une taille de bloc plus grande que la taille déclarée, soit il aura besoin du bloc de mémoire plus petit. Si le bloc de mémoire devient moindre pour le programme exécuté, les résultats ne seront pas précis et si la taille du bloc est plus grande pour le programme exécuté, la mémoire libre restante du bloc est sans usage.
Pour éviter cela, il est préféré utiliser la mémoire dynamique dans la programmation C qui a différents types de fonctions.
Qu'est-ce qu'une fonction malloc () dans la programmation C
En programmation C, si nous utilisons la mémoire statique, nous ne pouvons pas modifier la taille de la mémoire pendant l'exécution du programme. C'est une pratique recommandée d'utiliser la mémoire dynamique dans la programmation C afin que la taille de la mémoire puisse être modifiée lors de l'exécution du programme.
Pour l'utilisation de la mémoire dynamique, nous devons inclure un fichier d'en-tête «STDLIB.h ”, qui comprend toutes les fonctions de la mémoire dynamique. Le malloc () est également membre de STDLIB.h bibliothèque et est utilisée pour attribuer de la mémoire au programme exécuté. Lorsqu'une fonction malloc () est appelée dans un programme, il envoie une demande au tas du système, qui attribue le bloc de mémoire demandé à la fonction malloc () ou renvoie une valeur nulle s'il n'y a pas d'espace suffisant sur le tas.
Le malloc () demande le bloc de mémoire en fonction de la nécessité du programme exécuté et lorsque le programme est exécuté avec succès, nous pouvons retourner le bloc de mémoire au tas en utilisant la fonction libre (), afin qu'il puisse être utilisé pour l'exécution des autres instructions.
La syntaxe générale de la fonction malloc () est:
PTR_NAME = (Cast-Type *) Malloc (taille);L'explication de la syntaxe ci-dessus est simple:
Pour une meilleure compréhension, nous considérerons un exemple, créer un fichier avec le nom de mal_txt.c et tapez le script suivant:
#inclurePour compiler le mal_txt.Fichier C, nous utilisons le compilateur GCC:
$ gcc mal_txt.c -o mal_txtUne fois le fichier compilé avec succès sans aucune erreur, exécutez le code à l'aide de la commande:
$ ./ Mal_txtDans le code ci-dessus, nous créons le tableau et imprimons la somme des éléments du tableau. Une explication détaillée du programme ci-dessus est:
Qu'est-ce qu'une fonction realloc () dans la programmation C
Une autre fonction de la mémoire dynamique est la fonction realloc (), il est utilisé pour modifier le bloc de mémoire attribué à la fonction malloc (). La fonction malloc () comme indiqué ci-dessus demande un bloc de mémoire du tas, mais pour modifier la taille du bloc de mémoire, nous avons donc utilisé la fonction realloc () au lieu de supprimer le bloc de mémoire entier et de redémarrer manuellement le nouveau bloc de mémoire.
La fonction realloc () est la forme courte de la «réallocation de la mémoire» et il est utilisé pour redimensionner la taille du bloc de mémoire attribuée par le tas à malloc () ou calloc (). Il ne perturbe pas le contenu d'origine du bloc de mémoire et demande le nouveau bloc de mémoire du tas et copie toutes les données de l'ancien bloc de mémoire vers le nouveau bloc de mémoire sans en déranger aucun contenu.
La syntaxe générale de l'utilisation de la fonction realloc () est:
$ ptr = realloc (ptr, newsize);L'explication de la syntaxe ci-dessus est:
Encore une fois, nous créerons un fichier, Real_file.c, et écrivez le code pour une meilleure compréhension de l'utilisation de la fonction realloc ():
#inclureCompilez maintenant le real_file.C Utilisation du compilateur GCC:
$ gcc réel_file.C -o Real_fileSi le fichier est compilé avec succès, exécutez le programme à l'aide de la commande:
$ ./ real_fileL'explication du script ci-dessus est:
Conclusion
Dans la programmation C, l'allocation de mémoire dynamique est l'allocation manuelle de la mémoire en fonction de l'exigence du programme. Les fonctions malloc () et realloc () font partie de la mémoire dynamique; malloc () est utilisé pour l'allocation de mémoire et realloc () est utilisé pour la réallocation de la mémoire. Dans cet article, nous avons expliqué les deux; Fonctions malloc () et realloc (), comment elles fonctionnent et quelle est la syntaxe générale de l'utilisation des deux. Enfin, pour une meilleure compréhension, nous avons exécuté les exemples des deux fonctions.