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

Contenu supprimé Contenu ajouté
Ligne 16 :
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é laissée au programmeur a malheureusement sa contrepartie... En effet, contrairement à d'autres langages, le C ne possède ni garde-fous ni routines ([[w:ramasse-miettes|ramasse-miettes]] ou ''garbage collector'') chargés de gérer la mémoire. Une part conséquente des erreurs de programmation a pour origine une mauvaise utilisation des fonctions de gestion de la mémoire.
 
UnLa manière dont la mémoire physique d'un ordinateur est conçue, ainsi que la façon dont le système d'exploitation la manipule, sont très variables. Cependant, on peut considérer, de manère très générale, qu'un ordinateur possède une zone mémoire découpées en secteurs. Chaque secteur est identifié par une adresse (un numéro en quelque sorte). Le système d'exploitation installé sur la machine possède une table dans laquelle sont référencées toutes les adresses mémoires auxquelles il peut accéder. Le système utilise et met à jour cette table en permanence, ce qui lui permet de savoir quels secteurs sont libres et quels secteurs sont réservés. Un secteur est dit réservé si son accès est limité à un processus particulier le temps de son exécution. Cette gestion est capitale pour le système car elle empêche (pour peu qu'on l'utilise convenablement...) qu'un programme vienne écrire sur les zones mémoire utilisées par un autre.
 
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é.