[Volkard's Kurs Lektion 61] Copy Konstruktor (Speicherleck ???)



  • Hallo wiedermal,

    ich bin gerade aus Langweile (weil das Forum ja down war :() auf Volkards Kurs gegangen...

    Da fiel mir halt bei der Lektion was auf:

    Vector(const Vector &derAndereVector)
       {
          m_size=derAndereVector.m_size;
          m_data=new double[m_size];
          for(int i=0;i<m_size;++i)
             m_data[i]=derAndereVector.m_data[i];
       };
    

    Hier wird doch für m_data ein neuer Speicherbereich reserviert, aber was passiert mit dem alten wo er vorher hingezeigt hat. Der bleibt ja doch noch in der Luft 😃 (Speicherleck)

    Sollte es dann nicht so sein:

    Vector(const Vector &derAndereVector)
       {
          m_size=derAndereVector.m_size;
          delete [] m_data;
    
          m_data=new double[m_size];
          for(int i=0;i<m_size;++i)
             m_data[i]=derAndereVector.m_data[i];
       };
    

    😕 😕 😕



  • m_data hat doch vorher noch nirgends hingezeigt, du befindest dich ja in einem Konstruktor.

    MfG SideWinder



  • auf welchen speicherbereich sollte er denn vorher hingezeigt haben?



  • Ochja stimmt ja ... Heute wohl ein bisschen blind 😮 😮 😮
    Stimmt bin ja im Ctor 😃


Anmelden zum Antworten