Am Donnerstag, 17. November 2005 09:45 schrieb Frank Lanitz:
Am Donnerstag 17 November 2005 09:23 schrieb Johanns Schneider:
Jörg Pauly wrote:
Wenn Du einen Speicherbereich nullen willst, wofür auch immer, musst Du ihn erst NULLen und dann deleten.
Besser andersherum....
Grüsse aus Meissen Jörg
alao wenn ich das jetzt richtig verstanden habe ist es so besser (richtig?):
test *Test = new test(); Test = NULL; delete Test;
Du versuchst etwa zu löschen, auf das ein NULL-Zeiger weist. Da sich Dein Objekt wahrscheinlich nicht auf 0x0 befindet, na ich weiss nicht....
Sollte das eigentlich nicht mit einem Segfault beantwortet werden? *dumm in die Runde frag*
Stimmt, Du hast Recht, man will ja üblicherweise nicht den Zeiger, sondern dessen Speicher löschen: test *Test = new test; *Test = NULL; // Das nullt den Speicher des Objektes delete Test; Was man auf keinen Fall tun sollte, ist auf ein deletetes Objekt zuzugreifen. Der Kernel kann Millisekunden nach dem delete-Aufruf den Speicher neu zugeteilt haben, und dann gibt's unter Garantie einen SegFault. Auf einen auf NULL gesetzten Zeiger zuzugreifen ist auch "bah", endet auch mit einem SegFault, aber wohl nur bei Schreibzugriff. Sorry, mein Fehler... :-( Grüsse aus Meissen Jörg