2016-10-02 1 views
-1

Ich suchte diese Frage, aber ich konnte es nicht finden, wenn es eine wiederholte Frage ohne negativen Punkt ist, sagen Sie mir den Link der Antwort.Löschen Sie ein Mitglied einer Klasse in Destruktor, die durch neue in einer Methode in C++ gemacht wird

Im Studenten Klasse habe ich viele Mitglieder, aber vier von ihnen wird vom Bediener neue in einem Verfahren Öffentlichkeit geschaffen, die gesetzt genannt

Ich schreibe nur einer von ihnen hier:

class Student{ 
    private: 
    float *tp; 
    .... 
} 

Dies ist die Methode gesetzt, die öffentlichen ist:

void Student::set(int field, int valeur){ 
    ... 
      tp = new float[valeur]; 
    ...  
} 

Hier ist destructor die öffentlichen ist:

~Student(){ 
     ... 
     delete tp; 
     ... 
    } 

Die Haupt:

... 
Student *students=new Student[n]; 
... 
delete students; 

Es gibt keine Fehler beim Kompilieren, aber wenn ich laufe stand ich vor der Fehler:

ich ändern, um den Haupt Code auch nur für die Überprüfung wie:

Student s; 

Der Fehler existiert noch.

enter image description here

+0

ein Fehler im Code gibt es, dass Sie nicht –

+0

haben Post Bitte geben Sie ein minimales, aber vollständige Codebeispiel, das dieses Problem – vu1p3n0x

+0

in zeigt, was Sie enthielten, Sie rufen Sie nicht 'Set' und daher kann "tp" einen unbestimmten Wert haben, der bewirkt, dass "delete tp" undefiniertes Verhalten hat – vu1p3n0x

Antwort

1

Az vu1p3n0x sagte:

wenn ich neu verwendet [] sollte ich [] löschen verwenden.

Danke vu1p3n0x

+1

froh, dass ich helfen konnte: D – vu1p3n0x

Verwandte Themen