À retenir
- Il s'agit d'une mesure de protection du système d'exploitation.
- L'erreur entraîne l'arrêt immédiat et brutal du programme concerné.
- Elle est le signe d'un bogue dans la gestion de la mémoire par le développeur.
C'est un incident qui survient lorsqu'un logiciel tente de lire ou d'écrire dans une zone de la mémoire vive (RAM) qui ne lui appartient pas. Imaginez que vous essayiez d'ouvrir une porte dans un hôtel avec une clé qui n'est pas la vôtre : le système de sécurité (le système d'exploitation) intervient immédiatement pour arrêter net votre programme afin d'éviter qu'il ne perturbe les autres occupants.
Étymologie
Le terme vient du concept de segmentation de la mémoire, une technique informatique où la mémoire vive est découpée en sections (segments) pour isoler les logiciels les uns des autres. L'expression anglaise segmentation fault est très souvent abrégée en segfault par les développeurs.
Exemples d'usage
- Accéder au 100ème élément d'une liste qui n'en contient que 10.
- Tenter d'utiliser une adresse mémoire vide (pointeur
NULL) comme si elle contenait une information réelle. - Essayer d'écrire des données dans une zone de la mémoire qui est normalement réservée à la lecture seule.
Cas d'usage
Ce concept intervient principalement dans le développement de logiciels utilisant des langages dits « bas niveau » (comme le C ou le C++), où le programmeur doit gérer manuellement l'organisation de la mémoire vive. C'est une erreur classique lors de la création de systèmes d'exploitation, de pilotes de périphériques ou de jeux vidéo gourmands en ressources.
Bonnes pratiques
Pour éviter ce crash, il est recommandé d'initialiser systématiquement ses variables de mémoire (pointeurs), de toujours vérifier les limites des tableaux avant d'y piocher, et d'utiliser des outils d'analyse comme Valgrind qui aident à détecter les fuites et les accès illégaux avant que le programme ne soit diffusé.
Synonymes
Conseil
Si vous apprenez la programmation et que vous rencontrez cette erreur, utilisez un débogueur (comme GDB) : il vous indiquera précisément la ligne de code responsable de l'intrusion mémoire illégale.
Questions fréquentes
Est-ce que c'est un virus ?
Non, c'est simplement une erreur de programmation. Cependant, certains pirates exploitent ces failles pour tenter de prendre le contrôle d'un ordinateur.
Pourquoi cela arrive-t-il moins souvent sur les navigateurs web ?
Les langages utilisés pour le web (comme JavaScript) gèrent la mémoire automatiquement, ce qui empêche techniquement ce genre d'erreur directe d'arriver au développeur.
Que signifie le message 'Core dumped' qui accompagne souvent cette erreur ?
Cela signifie que le système a créé un fichier contenant l'état exact de la mémoire au moment du crash pour aider le développeur à comprendre ce qui s'est passé.