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äuft

    mfG
    😕 Phru@ 😕



  • Mit

    desc = new char;
    

    allokierst du einen einzigen Buchstaben (was wohl kaum so gedacht ist), mit

    delete[] desc
    

    versuchst 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 gehen

    delete[] varibale
    

    grüß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 gehen

    delete[] varibale
    

    grüß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ß


Anmelden zum Antworten