Vector Frage?



  • Hallo

    Bei folgendem Code (nur ein Beispiel)ruft Funktion 1 die Funktion 2 auf und bekommt als Rückgabe den Vektor v1. Die Funktion 1 übernimmt diesen Vector wiederum in den gleichen Vektor v1. Das ganze war allerdings nur ein Tippfehler im Originalcode, hat aber auch funktioniert. Nur hin und wieder stürzte das Programm ab, mit einem Speicherfehler. Dieser Fehler ist aber nicht reproduzierbar und das macht die Fehlersuche nicht einfach. Kann es daran liegen, daß ein Vector nochmal mit seinem eigenen Inhalt gefüllt wird?

    class c1
    {
    public:
            std::string funktion1()
            {
               v1 = funtion2();
               str1 = v1[1];
            }
    
            std::vector funktion2()
            {
              //hier steht irgendein Code, v1 wird gefüllt
              return v1;
            }
    
    private:
           std::vector v1;
           std::string str1;
    };
    


  • Hm, vl ist doch schon privat.

    Was Du schreibst ist über umwege

    vl = vl;

    Eventuell hat die Implementierung bei Zuweisung an sich selbst ein Problem.



  • Der Umweg ist ja der Fehler. Die Frage ist, ob das Programm abstürzen kann, wenn der Vektor nochmal mit seinen eigenen Daten beschrieben wird. Also er schreibt dann ja von einem Speicherbereich auf denselben Speicherbereich. Oder?



  • das dürfte kein problem sein, da a) jedes element einzeln kopiert wird (evtl. copy-ctor aufrufen) und b) liest man ja vor dem schreiben oder?? von daher kein problem


Anmelden zum Antworten