Fehler mit Destruktor
-
Hallo,
ich habe ein Problem beim Erstellen einer Klasse Polynom.
EIn Polynom soll aus einem unsigned int deg bestehen, der den Grad angibt, und aus einem Array der Länge deg+1 für die Koeffizienten.Als erstes habe ich in der Klasse Polynom eine Memberfunktion
polynom(unsigned int) geschrieben. Diese Funktion erstellt ein Array der Länge deg+1 und füllt das Array mit Nullen.Hier ist mein Quelltext:
[/cpp] #include<iostream> //Polynomklasse class polynom { private: unsigned int M_deg; double* M_coeff; public: //Nullkonstruktor polynom(unsigned int n) { M_coeff= new double[n+1]; for(unsigned int i=0;i<=n+1;i++) { M_coeff[i]=0.0; } std::cout<<"Nullpolynom erzeugt.\n"; } //Destruktor ~polynom() { delete[] M_coeff; } }; //Hauptprogramm int main() { unsigned int f_grad=2; double f_coeff[]={0.0,0.0,1.0}; polynom(2); }Das Problem liegt bei meinem Destruktor.
Das Programm lässt sich zwar ohne Fehler compilieren, doch wenn ich es ausführe
bekomme ich als Ausgabe:Nullpolynom erzeugt.
*** glibc detected *** ./uebung7b: free(): invalid next size (fast): 0x0804b008 ***
======= Backtrace: =========und dann folgen eine Menge Dateipfade Nullen,Einsen und anderes Zeug.
Aber was habe ich falsch gemacht?
Wenn ich den Destruktor auskommentiere funktioniert alles.
-
class polynom { private: unsigned int M_deg; double* M_coeff; public: polynom(unsigned int n) : M_coeff(new double[n]) { for(unsigned int i = 0; i != n; i++) { M_coeff[i]=0.0; } std::cout<<"Nullpolynom erzeugt.\n"; } ~polynom() { delete[] M_coeff; } };