Défaut de segmentation (segfault)

Définition - Que signifie une erreur de segmentation (Segfault)?

Une erreur de segmentation (segfault) est une erreur renvoyée par le matériel avec une protection de la mémoire qui indique au système d'exploitation qu'une violation d'accès à la mémoire s'est produite. Le système d'exploitation réagit généralement en informant le processus incriminé de l'erreur par un signal, puis le système d'exploitation effectue une sorte d'action corrective. Cela se produit car un processus ou un programme tente d'accéder à la mémoire qui ne lui est pas affectée.

Une erreur de segmentation est également appelée violation d'accès.

Definir Tech explique l'erreur de segmentation (Segfault)

Un défaut de segmentation est souvent causé par des erreurs de programmation d'un processus ou d'une application dans lequel le programme est amené à accéder à une mémoire qui ne lui était pas allouée mais à d'autres programmes ou au système lui-même. Un processus n'est pas autorisé à toucher la mémoire qui ne lui est pas réservée, car il doit toujours demander de la mémoire avant de l'utiliser. Par conséquent, lorsqu'il touche accidentellement la mémoire qui ne lui est pas affectée, une violation d'accès se produit.

Les Segfaults peuvent également être causés par une fonction récursive, qui peut utiliser tout l'espace de pile qui lui est attribué et empiéter rapidement sur la mémoire qui ne lui est pas affectée. Dans certains systèmes, cela est considéré comme un débordement de pile, mais pour d'autres, il s'agit simplement d'une sorte de violation d'accès.

Une erreur de segmentation peut être gérée par un processus via un gestionnaire de signal personnalisé, mais c'est souvent le gestionnaire de signal par défaut du système d'exploitation qui est utilisé, ce qui entraîne généralement l'arrêt anormal du processus incriminé, appelé crash, ou le système d'exploitation forçant un vidage de mémoire .