« Programmation C/Gestion de la mémoire » : différence entre les versions

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
Tados (discussion | contributions)
mAucun résumé des modifications
Ligne 9 :
* <code>realloc</code>, pour modifier la taille d'une zone mémoire déjà allouée.
 
Ces fonctions sont déclarées dans l'en-tête <code>&lt;stdlib.h&gt;</code>.
 
== Gestion dynamique de la mémoire ==
Les déclarations de variables en C et dans beaucoup d'autres langages ont une limitation très importante : la taille des variables doit être connue à la compilation. Cela pose problème quand on ne sait qu'à l'exécution le nombre de données qu'on doit traiter. Pour résoudre ce problème, et pouvoir décider durant l'exécution d'un programme du nombre de variables à créer, il faudra nécessairement passer par de l'allocation dynamique de mémoire. Avec ce système, le programmeur dispose de fonctions qui permettent de demander au système une zone mémoire d'une certaine taille, qu'il pourra utiliser comme il le souhaite. En C, ces fonctions sont disponibles dans l'en-tête <tt><stdlib.h></tt>.
 
L'un des principaux avantages qu'offre le langage C est sa capacité à fournir au programmeur un contrôle poussé sur la gestion de la mémoire. Cette liberté nécessite néanmoins une grande rigueur, tant les problèmes pouvant survenir sont nombreux et souvent difficiles à diagnostiquer. On peut dire sans prendre beaucoup de risque que la plupart des erreurs de programmation en C, ont pour origine une mauvaise utilisation des fonctions de gestion de la mémoire. Il ne faut pas sous-estimer la difficulté de cette tâche. Autant cela est trivial pour un programme de quelques centaines de lignes, autant cela peut devenir un casse-tête quand ledit programme a subi des changements conséquents, pas toujours fait dans les règles de l'art.
Ligne 24 :
Un processus peut donc demander au sytème de réserver pour son usage exclusif un secteur mémoire de taille déterminée. Il peut également demander au sytème de modifier la taille d'une zone précédemment réservée ou de la libérer s'il n'en a plus l'utilité.
 
== Fonctions fournies par <stdlib.h> ==
 
=== <code>malloc</code>: allocation de mémoire ===