new <> delete
-
Hi,
Buchung::Buchung() : id(0) , value(0) { desc = new char; id++; } Buchung::~Buchung() { cout << desc <<endl; cin.ignore(); delete [] desc; }desc ist in der Klasse Buchung als private: char * desc deklariert
nun ich hab damit folgendes Problem ... bei dem delete bricht er bei der Ausführung ab :-// wenn ich allerdings das delete auskommentiere läuft das programm augesnscheinlich okay. Also nehm ich an, das ich irgendetwas an der Syntax falsch habe.
Vielleicht weiß ja jemand was da schief läuftmfG
Phru@ 
-
Mit
desc = new char;allokierst du einen einzigen Buchstaben (was wohl kaum so gedacht ist), mit
delete[] descversuchst du aber ein Array von Buchstaben zu löschen. Klarer?
-
ja schon aber wenn ich zB
desc = new char[100]eingebe bringt er mir den gleichen fehler???
-
Hi,
Buchung::Buchung() : id(0) , value(0) { desc = new char; id++; } Buchung::~Buchung() { cout << desc <<endl; cin.ignore(); delete [] desc; }problem das Leeerzeichen nach delete und vor []
ohne sollte es gehendelete[] varibalegrüße
-
Das bezweifle ich zutiefst.
-
Cyriz schrieb:
Hi,
Buchung::Buchung() : id(0) , value(0) { desc = new char; id++; } Buchung::~Buchung() { cout << desc <<endl; cin.ignore(); delete [] desc; }problem das Leeerzeichen nach delete und vor []
ohne sollte es gehendelete[] varibalegrüße
ne das kann es nicht sein!!!!!
vielleicht noch jemand ne Idee??
-
Phruaed schrieb:
bei dem delete bricht er bei der Ausführung ab :-//
Klar. Mein Auto geht beim Fahren aus, kannst du mir sagen was kaputt ist?
-
Wahrscheinlich wird das Objekt kopiert oder zugewiesen und das delete mehrfach ausgeführt. Also: Zuweisungsoperator und Copy-Constructor schreiben oder deaktivieren.
-
7H3 N4C3R schrieb:
Wahrscheinlich wird das Objekt kopiert oder zugewiesen und das delete mehrfach ausgeführt. Also: Zuweisungsoperator und Copy-Constructor schreiben oder deaktivieren.
ahja KopierKonstruktor da war was danke..
Gruß