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 ..