Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1675 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Erreur de segmentation inconnue

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Erreur de segmentation inconnue

n°2333336
Sachifus
Passionné d'informatique
Posté le 09-05-2019 à 22:13:37  profilanswer
 

Bonsoir,
 
Depuis plusieurs jours, je peine à réaliser une structure de liste chaînée basique en C++.
J'ai tout tenté, mais systématiquement j'obtiens une erreur de segmentation....
D'après gdb, elle se produirait à la ligne 25 ci-dessous mais je ne comprends pas pourquoi...
 

Code :
  1. #include <iostream>
  2. struct Noeud {
  3. int valeur;
  4. Noeud *noeud_suivant;
  5. };
  6. struct Liste {
  7. Noeud *tete_de_liste;
  8. };
  9. int main() {
  10. Liste *liste;
  11. Noeud *noeud;
  12. noeud->valeur = 20;
  13. noeud->noeud_suivant = nullptr;
  14. liste->tete_de_liste = noeud;
  15. }


 
Je suis sûr qu'il s'agit d'une erreur toute bête mais plusieurs jours de réflexion ne m'ont pas aidé à l'identifier...
Merci par avance pour votre aide

mood
Publicité
Posté le 09-05-2019 à 22:13:37  profilanswer
 

n°2333337
chef_keepe​r
Posté le 09-05-2019 à 23:18:19  profilanswer
 

Il semblerais que tu ais oublier d'allouer de la mémoire à tes pointeurs, à mon avis ça devrais même planter à la ligne 24 mais t'as juste eu de la chance.

n°2333346
Sachifus
Passionné d'informatique
Posté le 10-05-2019 à 10:28:10  profilanswer
 

chef_keeper a écrit :

Il semblerais que tu ais oublier d'allouer de la mémoire à tes pointeurs, à mon avis ça devrais même planter à la ligne 24 mais t'as juste eu de la chance.


Merci pour ta réponse. Comment pourrais-je modifier mon code du coup pour que ça fonctionne ? Merci


---------------
Étudiant, passionné par l'informatique. Mon site internet : https://www.sachifus.com
n°2333360
xilebo
noone
Posté le 10-05-2019 à 11:56:00  profilanswer
 

Sachifus a écrit :


Merci pour ta réponse. Comment pourrais-je modifier mon code du coup pour que ça fonctionne ? Merci


 
il faut allouer la mémoire.
 
Voici comment allouer ( et désallouer après ).
 

Code :
  1. #include <iostream>
  2. struct Noeud {
  3. int valeur;
  4. Noeud *noeud_suivant;
  5. };
  6. struct Liste {
  7. Noeud *tete_de_liste;
  8. };
  9. int main() {
  10. Liste *liste = new Liste();
  11. Noeud *noeud = new Noeud();
  12. noeud->valeur = 20;
  13. noeud->noeud_suivant = nullptr;
  14. liste->tete_de_liste = noeud;
  15. delete noeud;
  16. delete liste;
  17. }


 
 

n°2333365
Joel F
Real men use unique_ptr
Posté le 10-05-2019 à 12:52:14  profilanswer
 

En 2019, on preferera utiliser std::unique_ptr pour gérer la durée de vie des données dynamiques plutot que new et delete

n°2333395
Sachifus
Passionné d'informatique
Posté le 10-05-2019 à 23:32:19  profilanswer
 

Merci beaucoup à tous pour vos réponses !  
 
Bonne soirée :)


---------------
Étudiant, passionné par l'informatique. Mon site internet : https://www.sachifus.com

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Erreur de segmentation inconnue

 

Sujets relatifs
Erreur "DDERR_SURFACELOST"VBA - Erreur Exécution
Besoin d'aide pour trouver mon erreur.bat erreur [ ( était inattendu. ]
Erreur de segmentation.[Python] Connection aux routeurs et détection d'erreur
Erreur en fin de boucle ?Fonction recherchev vba erreur indice
Erreur connexion à la database 
Plus de sujets relatifs à : Erreur de segmentation inconnue


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR