Program received signal SIGSEGV, Segmentation fault

Ok... ich bin rippen meine Haare aus... Warum bin ich immer der Segmentierung fauls, wenn ich bin vorbei ein string namens "name" mit dem Inhalt "joel" in

void person::setName(string newName)
{
    personName = newName;
}

Header-Datei:

class person {
public:
    int getID();
    string getName();

    void setID(int newID);
    void setName(string newName);
private:
    int personID;
    string personName;

};

btw... der Aufruf der Funktion ist durch ein Kind, obwohl ich nicht sehen, wie das könnte ein Problem verursachen.

  • Auch... Es läuft auf vorherigen itterations ohne Fehler... Es wird einfach nicht wie diese iteration... ich würde den link den code, aber es gibt Eimer von dem Zeug X(
  • Ich glaube nicht, dass dein problem ist, die Funktion. Möchten Sie vielleicht einen Blick auf, wie Sie erstellen/Zugriff auf das Objekt person aus, die Sie verwenden.
  • Dein code-Beispiel ist in Ordnung, den segfault verursacht wird woanders. Bitte Schritt für Schritt durch den code mit einem debugger zu finden, die Codezeile, die den Fehler verursacht.
  • Dann reduzieren Sie bitte Ihren code so gering wie möglich und poste es hier. Es gibt kein Problem mit dem obigen code, in isolation, mindestens.
  • auch die varible personName erreicht (in meinen Uhren) "das Programm gedebuggt wird signalisiert wurde, während in einem Funktion Anruf von gdb"
  • Ähm, sagen Sie, dass die Zeichenfolge "das Programm gedebuggt wird..." war der Inhalt dieser Variablen? Sehr seltsam. Können Sie uns sagen, auf welcher Codezeile der Fehler auf? Erstellen Sie das Programm mit -g (bei Verwendung von GCC), dann führen Sie es in der GDB. Es wird Pause auf die Fehler. Wenn Sie nicht erkennen, wo Sie sind, dann geben Sie bt denen gezeigt wird, die Funktion call-stack. Blick in den stack, bis Sie einige Ihrer code-das ist die Zeile mit dem Fehler.
  • Um genau zu sein, das wäre die Zeile mit dem symptom. Der eigentliche Fehler könnte woanders sein.
  • gdb ist nur bestätigt, dass die dieser Zeiger ungültig ist, auf den Zeitpunkt der Bewertung. +1 für die Verwendung eines Debuggers, btw
  • Chalesworth / @sehe in der Tat. Ich habe versucht, die Dinge zu vereinfachen, aber vielleicht habe ich zu stark vereinfacht. Um zu zeigen, dass ich weiß, wovon ich spreche ;), schrieb ich eine Anleitung, um das Debuggen mit diesen Themen: ww2.cs.mu.oz.au/~mgiuca/253/bad.html Vielleicht wird es hilfreich sein.
  • Ha - schön finden (bgcc, bisher mir nicht bekannt). Jedoch, wie debugging-STL-Iteratoren-und debugging-heap-allocators, Sie alle blass im Vergleich zu der schieren Fundamentalismus valgrind; es ist positiv check für alle nicht initialisiertes/undefined Speicher-Referenzen, sei es innerhalb oder außerhalb der Grenzen (zusätzlich zu tun, die Leck-Prüfung) - sogar ohne erfordern debug-builds, oder an einem bestimmten compiler. Rockt

InformationsquelleAutor falconmick | 2011-05-02
Schreibe einen Kommentar