absturz bei delete



  • was ist bei delete falsch ?? des stimmt doch so oder.

    ich bekomme immer einen laufzeit fehler, block type valid saft vc++

    danke

    #include "übung.h"
    
    mystring::mystring(char *a){
    
        len =strlen(a);
        array = new char[len+1];
        strcpy(array,a);
    
    }
    
    mystring::~mystring(){
    
        len=0;
        delete array;
    }
    
    void mystring::printIT(){
    
        cout<<array<<endl;
    }
    
    char* mystring::getIT(){
    
        return array;
    }
    
    mystring& mystring::operator=(mystring &b){
    
        len =0; 
        delete array;
    
        len =strlen(b.getIT());
        array = new char[len+1];
        strcpy(array,b.getIT());
    
        return *this;
    
    }
    
    void mystring::operator[](char t){
    
        array[2]=t;
    
    }
    
    int main(){
    
        mystring a("das ist ja krass!");
        mystring b("ne ne is net!");
    
    /*  a.printIT();
    
        a =b;
    
        a.printIT();
    
        a['X'];
    
        a.printIT();*/
    
        a.~mystring();
    
        return 0;
    }
    


  • Original erstellt von <mart>:
    **```cpp
    a.~mystring();

    was soll das?



  • hi, auf new typ**[size]** muß immer delete**[]** kommen

    [ Dieser Beitrag wurde am 07.07.2003 um 19:10 Uhr von crass editiert. ]



  • des ist a unglaublich!!!!!!!!!
    aber ich will wissen warum ich den fehler bekomme den ich beschrieben habe



  • warum genau das kommt, ist nicht zu sagen. es ist einfach undefiniertes verhalten und die implementation darf dann tun, was sie will.



  • habe gerade festgestellt das der destruktor ja automatisch aufgerufen wird.

    klar das wenn ich ihn 2 mal auf rufe das dann ein segfault kommt ..


Anmelden zum Antworten