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

C++ Discussion :

Problème : pas de segmentation fault ?!


Sujet :

C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 123
    Points : 100
    Points
    100
    Par défaut Problème : pas de segmentation fault ?!
    Salut,

    je me remet au C++ et j'ai des petits problèmes.
    J'ai tapé le bout de code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    int main(){
    	// Création d'un tableau
    	int tab[10];
    	tab[12] = 11;
    	return 0;
    }
    L'exécution ne pose aucun problème. Je m'attendais à une segmentation fault.
    Que s'est-il passé ?

    Merci de votre aide.

  2. #2
    screetch
    Invité(e)
    Par défaut
    il s'est passé un comportement indefini donc on ne peut pas s'attendre a quelque chose!

    ce qu'il s'est passé c'est que la tu as été deborder un peu sur la pile et tu as ecrit au dela du tableau, mais a un endroit qui appartenait encore a ton programme, et qui n'a pas eu de consequence sur l'execution. en gros tu n'as pas tapé de partie sensible, et dans une zone qui etait a toi.

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 581
    Points
    41 581
    Par défaut
    En théorie sur un x86 en 32 bits, je dirais que tu dois avoir écrasé le paramètre argc ou argv.
    Ce n'est qu'une hypothèse (vu que le comportement est indéfini), mais dans le cas actuel on peut supposer:
    • soit que tab[10] est l'adresse de retour (tu devrais avoir une meilleure chance d'obtenir une segfault si tu l'écrases), tab[11] est donc argc et tab[12] est argv
    • soit que tab[10] est le frame pointer, tab[11] serait donc l'adresse de retour et tab[12] serait argc.

    Dans les deux cas, tu sembles avoir "sauté" la première zone sensible, évitant le crash.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 123
    Points : 100
    Points
    100
    Par défaut
    Merci de la réponse et des détails !
    Maintenant j'ai compris : c'est à moi de faire attention à la taille de mes tableaux !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de compilation segmentation fault
    Par nightfire dans le forum Fortran
    Réponses: 7
    Dernier message: 24/02/2009, 17h02
  2. problème de segmentation fault
    Par cheff dans le forum Débuter
    Réponses: 4
    Dernier message: 21/02/2008, 11h26
  3. Réponses: 6
    Dernier message: 01/11/2007, 18h44
  4. [Socket SSL] problème de "Segmentation fault"
    Par jesus144 dans le forum Programmation et administration système
    Réponses: 1
    Dernier message: 09/03/2007, 19h50
  5. Problème Segmentation Fault
    Par marcix dans le forum C
    Réponses: 4
    Dernier message: 04/12/2006, 14h48

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