Qu'est-ce qu'un défaut de segmentation sur Linux?

Sous Linux:

Qu'est-ce qu'un défaut de segmentation? Je sais que ça bloque les programmes, mais est-ce une sorte de problème de fuite de mémoire, ou quelque chose de complètement sans rapport? Aussi, comment traitez-vous ces? Est-ce typiquement un problème avec l'ordinateur, ou à l'intérieur de l'application elle-même?

cela se produit-il aussi dans d'autres systèmes D'exploitation?

26
demandé sur Jonathan Leffler 2010-07-08 07:39:28

2 réponses

un défaut de segmentation est lorsque votre programme tente d'accéder à la mémoire, soit qu'il n'a pas été assigné par le système d'exploitation, soit qu'il n'est pas autorisé à y accéder.

"segmentation" est le concept de chaque processus sur votre ordinateur ayant sa propre virtual espace d'adressage. Ainsi, lorsque le processus a lit l'emplacement de mémoire 0x877, il lit l'information résidant à un emplacement physique en mémoire vive par rapport au moment où le procédé B Lit le sien 0x877.

tous les systèmes d'exploitation modernes prennent en charge et utilisent la segmentation, et donc tous peuvent produire un défaut de segmentation.

pour traiter un défaut de segmentation, fixez le code qui le provoque. Il est généralement indicatif d'une mauvaise programmation, en particulier les erreurs de condition limite, la manipulation incorrecte de pointeur, ou des hypothèses invalides sur les bibliothèques partagées. Parfois segfaults, comme n'importe quel problème, peut être causé par du matériel défectueux, mais ce n'est généralement pas le cas.

25
répondu Borealid 2010-07-08 04:05:07

un 'segfault' est quand un programme accède à une mémoire protégée ou invalide; généralement en raison d'une mauvaise gestion de la mémoire ou d'une manipulation de pointeur buggy.

l'OS détecte les accès mémoire invalides et bloque l'application.

5
répondu John Weldon 2010-07-08 03:43:38