IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

c'est Quoi ? Erreur de segmentation


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif
    Inscrit en
    Juin 2008
    Messages
    304
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 304
    Par défaut c'est Quoi ? Erreur de segmentation
    Bonjour,

    je suis un Débutant en programmation system en C.

    Voila, j'ai souvent cette erreur à l'exécution
    Erreur de segmentation
    que je ne comprenant pas.

    Si quelqu’un connait c'est quoi qui cause cette erreur
    Alors si il peu m'claires.

    Merci d'avance.

  2. #2
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015

  3. #3
    Membre émérite
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Par défaut
    En gros, tu accède (lecture ou écriture) dans une zone que l'OS ne connaît pas (i.e. que tu ne lui a pas réclamée).
    Typiquement:
    - déréfrencement d'un pointeur invalide (*NULL)
    - débordement (char *toto=malloc(3*sizeof(toto)); toto[3] = 'a').

    Pour solutionner ce problème:
    - active les warnings (-Wall au moins avec gcc)
    - active les logs et les cores (compile avec -g et ulimit -c unlimited puis gdb ton_programme core.xxxx)
    - enfin, relis ton code pour voir les problèmes potentiels ci-dessus exposé. Si tu ne trouve pas, tu peux poster un code minimal qui compile et reproduit l'erreur.

    edit: je ne savais pas que c'était sous wikipedia... très bonne idée...

  4. #4
    Inactif
    Inscrit en
    Juin 2008
    Messages
    304
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 304
    Par défaut
    MERCI

  5. #5
    Membre éclairé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2007
    Messages : 509
    Par défaut
    Citation Envoyé par D[r]eadLock Voir le message
    En gros, tu accède (lecture ou écriture) dans une zone que l'OS ne connaît pas (i.e. que tu ne lui a pas réclamée).
    Moi, je dirais qu'une erreur de segmentation c'est quand un programme accède en L/E à des adresses qui sont interdites par le programme utilisateur.

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 30
    Par défaut
    Citation Envoyé par publicStaticVoidMain Voir le message
    Moi, je dirais qu'une erreur de segmentation accède en L/E à des adresses qui sont interdites par le programme utilisateur.
    Non, l'explication de D[r]eadLock est correct.

    Une autre formulation possible est, selon moi, de dire qu'on accède à une adresse qui n'appartient pas à notre programme.

    Sur un très très vieux OS (sans mémoire virtuelle), cela peut être une adresse de l'OS ou celle d'un autre programme et effectivement il est interdit d'aller lire ou écrire des données qui ne sont pas partagées (isolation des processus).

    Mais sur un OS "normal" de PC (avec mémoire virtuelle), le nombre (l'adresse) pointe toujours une zone de notre mémoire virtuelle, donc il est incorrect de dire "interdit". En revanche si cela tombe dans une zone mémoire non préalablement allouée, l'OS (+matériel) ne pourra pas trouver le bout de mémoire physique qui correspond ---> erreur.

    Dans tous les cas on peut résumer la problème en disant qu'on pointe sur une adresse qui n'appartient à notre segment mémoire.

    Cyril.

Discussions similaires

  1. Erreur de segmentation avec fortran: c'est quoi?
    Par VauRDeC dans le forum Fortran
    Réponses: 2
    Dernier message: 29/09/2010, 09h06
  2. session_start erreur c'est quoi quoi le problème ?
    Par noobspower dans le forum Langage
    Réponses: 3
    Dernier message: 06/03/2007, 13h43
  3. Réponses: 4
    Dernier message: 28/03/2006, 22h52
  4. Sujet : erreur '800a139a' C'est quoi?
    Par nickg dans le forum ASP
    Réponses: 24
    Dernier message: 29/10/2005, 17h26
  5. c'est quoi cette erreur??
    Par elekis dans le forum C++
    Réponses: 5
    Dernier message: 11/09/2005, 14h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo