Mémoire libre en C avec fonction libre

Free Memory C With Free Function



Le langage C est suffisamment efficace pour gérer sa gestion mémoire. Cela signifie que chaque fois que vous déclarez une variable régulière de n'importe quel type de données en C, le langage de programmation lui-même est responsable de la libération ou de la libération de cette mémoire une fois que votre programme a été exécuté avec succès. Cependant, dans le cas de l'allocation dynamique de mémoire, puisque vous allouez la mémoire manuellement, c'est pourquoi vous devez également la libérer vous-même.

Dans la bibliothèque stdlib.h, il existe une fonction dédiée à cette fin, c'est-à-dire la fonction free(). Aujourd'hui, nous allons explorer la nécessité d'utiliser cette fonction dans le langage de programmation C. Après cela, nous verrons quelques exemples dans lesquels cette fonction a été utilisée pour libérer de la mémoire manuellement dans le langage de programmation C sous Linux.







Besoin d'utiliser la fonction Free en C pour libérer de la mémoire système :

Nous savons tous que nos systèmes informatiques ont une mémoire limitée, à cause de laquelle nous ne pouvons jamais y exécuter des programmes infinis. Dans le cas de l'allocation automatique de mémoire, l'ordinateur se charge de libérer de la mémoire lorsque votre programme a terminé son exécution. Cependant, lorsque nous allouons la mémoire manuellement à partir du tas, nous devons la libérer d'une manière ou d'une autre.



Sinon, nous finirons par manquer de mémoire et nous n'exécuterons plus nos programmes. C'est là qu'intervient la fonction free() de la bibliothèque stdlib.h. Nous utilisons cette fonction à la fin d'un programme juste avant l'instruction return afin que la mémoire du tas soit renvoyée au système informatique avant la fin de votre programme.



Supposons que vous continuiez à ignorer cette fonction lors de l'écriture de vos codes C qui sont particulièrement ciblés vers l'allocation dynamique de mémoire. Dans ce cas, un moment viendra où vous ne pourrez plus accéder à votre tas car il manquera de mémoire. C'est pourquoi cette fonction apparemment moins précieuse ne doit jamais être oubliée chaque fois que vous prenez la responsabilité de l'allocation de mémoire de manière dynamique.





La syntaxe générale de la fonction free() dans le langage de programmation C est la suivante :

annulerlibre (annuler*ptr)

Ici, le mot-clé void avant la fonction free() indique que le type de retour de cette fonction est void. Le pointeur à l'intérieur des crochets correspond à l'emplacement mémoire qui doit être désalloué. La section suivante décrira quelques exemples dans lesquels la fonction free() a été utilisée pour libérer la mémoire dynamique acquise en C.



Exemples d'utilisation de la fonction libre en C :

La fonction free() peut être utilisée avec les trois fonctions d'allocation de mémoire de la bibliothèque stdlib.h, c'est-à-dire malloc, calloc et realloc. Il est obligatoire d'utiliser cette fonction après avoir indiqué les fonctionnalités de base de votre programme afin que vous puissiez remettre à votre système informatique la mémoire de tas que vous avez allouée dynamiquement lors de l'exécution du programme. Voyons maintenant quelques exemples dans lesquels la fonction free() a été utilisée avec les fonctions malloc et calloc dans le langage de programmation C.

Exemple #1 : Utilisation de la fonction Free avec calloc en C :

Le code C pour utiliser la fonction free() avec la fonction calloc() a été partagé dans l'image ci-dessous :

L'objectif fondamental de ce code était d'affecter de la mémoire de manière dynamique à l'aide de la fonction calloc(). Pour cela, nous avons pris la taille de la mémoire dynamique et les valeurs de cette mémoire dynamique en entrée de l'utilisateur. Ensuite, nous avons eu l'intention d'imprimer les valeurs acquises sur le terminal. Après tout ce code, nous avons notre fonction free() qui libérera la mémoire dynamique allouée en raison de l'exécution de notre programme C.

Une version légèrement modifiée du même code est également montrée dans l'image citée ci-dessous :

Cette version modifiée ne visait qu'à imprimer nos valeurs mémoire allouées dynamiquement avant son initialisation manuelle. Nous savons que la fonction calloc() initialise toute la mémoire avec des zéros avant que l'actualisation ne se produise. Cependant, le point principal à noter ici dans ce code est que même si ce code était assez compact et simple, nous avons quand même utilisé la fonction free() une fois que la fonctionnalité souhaitée a été atteinte juste pour libérer la mémoire de tas que nous avions acquis à la suite de l'exécution de ce programme C.

Exemple #2 : Utilisation de la fonction Free avec malloc en C :

Le code C pour utiliser la fonction free() avec la fonction malloc() a été partagé dans l'image jointe ci-dessous :

L'objectif de base de ce code était d'affecter de la mémoire de manière dynamique à l'aide de la fonction malloc(). Pour cela, nous avons affecté les valeurs de cette mémoire dynamique dans une boucle for. Ensuite, nous avons eu l'intention d'imprimer les valeurs acquises sur le terminal à l'aide d'une autre boucle for. Après tout ce code, nous avons notre fonction free() juste avant l'instruction return qui libérera simplement la mémoire dynamique allouée à la suite de l'exécution de notre programme C.

Conclusion:

Cet article a souligné l'importance d'utiliser la fonction free() dans le langage de programmation C sous Linux. La plupart des utilisateurs pensent que les fonctions d'allocation du fichier stdlib.h sont plus importantes ; cependant, en parcourant cet article, vous pouvez clairement voir que la fonction free() est tout aussi importante. Il vous aidera à libérer la mémoire acquise dynamiquement et à garantir que vous ne manquerez jamais de mémoire chaque fois que vous essayez d'exécuter vos programmes à l'avenir.