Je souhaite insérer un noeud dans une liste doublement chaînée. Je suis passé dans la position, le nouveau coefficient du polynôme et sa puissance. Je n'ai pas d'erreurs de compilation, mais j'obtiens une erreur Segmentation dans linux (g ++) et un emplacement d'écriture de violation d'accès lorsque je l'exécute avec Visual Studio.Erreur de segmentation || Violation d'accès Emplacement d'écriture
Exception non gérée à 0x00bd20ba dans Program.exe: 0xC0000005: Emplacement d'écriture de violation d'accès 0xcdcdcdd9.
void Polynomial::insert(Term *pos, double newCoefficient, int power)
{
Term *newTerm = new Term; // create a new node to insert
// Link the new node to previous and next, given the position
newTerm->prev = pos->prev;
newTerm->next = pos;
newTerm->prev->next = newTerm; // Here's where I'm getting the error
newTerm->next->prev = newTerm;
// change the coefficient and power
newTerm->coefficient = newCoefficient;
newTerm->power = power;
}
Qu'est-ce que je fais mal et comment puis-je résoudre ce problème?
L'adresse '0xcdcdcdd9' a une adresse de débogage écrite partout. valider vos entrées avant de les déréférencer (ou de les affecter d'ailleurs). – WhozCraig