À retenir
- Il contient les variables globales et statiques.
- Sa taille est généralement déterminée au moment où le programme démarre.
- Les données qu'il contient persistent durant toute la durée de vie du programme.
Le segment de données est une zone spécifique de la mémoire vive (RAM) utilisée par un programme pour stocker ses variables « permanentes », c'est-à-dire celles qui existent du début à la fin de l'exécution. On peut l'imaginer comme un casier fixe où l'ordinateur range des informations importantes qui doivent rester accessibles à tout moment, contrairement aux données temporaires qui disparaissent rapidement.
Étymologie
Le mot « segment » provient du latin segmentum (morceau coupé), désignant ici une portion délimitée de la mémoire. Le terme s'est imposé avec l'architecture des processeurs qui découpent la mémoire en zones spécialisées (code, données, pile) pour mieux organiser le travail du système d'exploitation.
Exemples d'usage
- Une variable globale qui compte le nombre total de clics dans un logiciel.
- Une constante mathématique comme PI utilisée dans plusieurs fonctions d'un programme.
- Une variable statique en langage C qui conserve sa valeur même après la fermeture de la fonction qui l'a créée.
Cas d'usage
Ce concept intervient principalement lors de la compilation de logiciels (C, C++, Rust). Il est essentiel pour la gestion de la mémoire par le système d'exploitation, car il permet de séparer les instructions de calcul (le code) des informations manipulées (les données).
Bonnes pratiques
Il est recommandé de ne pas abuser des variables globales (stockées dans ce segment) car elles occupent de la mémoire en permanence et peuvent rendre le code difficile à déboguer. Pour des données volumineuses et temporaires, on préférera utiliser le « tas » (heap) ou la « pile » (stack).
Synonymes
Antonymes
Conseil
Si vous apprenez la programmation système, retenez que le segment de données est souvent divisé en deux : une partie pour les variables déjà initialisées (avec une valeur de départ) et une autre (appelée BSS) pour celles qui attendent d'être remplies.
Questions fréquentes
Quelle est la différence entre le segment de données et la pile ?
La pile stocke des données temporaires qui sont effacées dès qu'une fonction se termine, alors que le segment de données conserve les informations jusqu'à la fermeture totale du programme.
Le segment de données contient-il le code du programme ?
Non, le code (les instructions) est stocké dans un autre espace appelé le segment de texte ou segment de code.