delete und Strukturen
-
hallo, ich frage mich, ob sich ein delete befehl auf alle inhalte eines zeigers auf eine struktur auswirkt.
ich meine das folgendermassen:
ich habe ein struct mit einem zeiger auf ein array mit 10 Zeigern auf ein anderes struct. in diesen zeigern sind wiederum zeigerarrays auf einen ganz anderen struct typ.
wenn ich nun den delete befehl "[]" auf den ersten zeiger anwende, wirkt sich der dann auch auf die mit new erzeugten zeiger der arrays im array aus ? oder muss ich praktisch jedes zeiger array separat "deleten" ?
ich hoffe ich konnte es halbwegs deutlich machen, was ich meine

gruß und danke
rml
-
RML schrieb:
ich habe ein struct mit einem zeiger auf ein array mit 10 Zeigern auf ein anderes struct. in diesen zeigern sind wiederum zeigerarrays auf einen ganz anderen struct typ.
also so:
struct A { ... }; struct B { A *array[10]; }; struct C { B *array[10]; }; C *c = new C[10]; // ... delete[] c;?
wenn ich nun den delete befehl "[]" auf den ersten zeiger anwende, wirkt sich der dann auch auf die mit new erzeugten zeiger der arrays im array aus ?
Nein. delete tut 2 Dinge: 1) es ruft den Destruktor auf 2) es gibt den Speicher frei. Der Destruktor von C ist vom Compiler generiert, da du keinen geschrieben hast. Dh, das array wird nicht freigegeben.
oder muss ich praktisch jedes zeiger array separat "deleten" ?
Ja. Aber nicht von Hand, dafür gibt es schließlich Destruktoren.
-
so in etwa, nur das die grösse der arrays nicht bekannt ist und zur laufzeit generiert wird.
danke, jetzt weiss ich zumindest, wie ich weitermachen muss
