Problem mit char* und delete[]
-
Hallo zusammen!
das folgende Programm lässt sich zwar compilieren, wenn ich es aber ausführen
will geht es bis zur "delete[] str" Anweisung und bricht dann ab.int main() { char *str = new char[10]; str = "hallo"; delete[] str; // hier bricht es ab! return 0; }
wohingegen diese Programm ohne Probleme funktioniert:
int main() { char *str = new char[10]; *str = 'a'; *(str + 1) = 'b'; delete[] str; //hier funktioniert das delete[] return 0; }
An was liegt das ?
-
str = "hallo";
==>
strcpy(str, "hallo");
Du versuchst etwas zu löschen das dir nicht "gehört".
mfg JJ
-
hi,
der string wird durch die Zuweisung des Literals umgebogen.
delete versucht dann statischen speicher zu löschen, was natürlich nicht geht.
Um den String das Wort 'Hallo' zuzuweisen, must du das literal kopieren.
strcpy(str, "Hallo");
Gruss
-
Zu spät :p
-
John Doe schrieb:
Zu spät :p
wenigstens noch éin paar Infos dabei...
Gruss
EB